从计划服务更新UI

时间:2012-07-11 14:52:00

标签: android android-intent

我正在使用AlarmManager定期启动服务以从服务器检索数据:

    alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(context, Service.class);
    PendingIntent pendingIntent = PendingIntent.getService(this, 1, intent, 0);
    alarmManager.setRepeating(
            AlarmManager.ELAPSED_REALTIME_WAKEUP,
            SystemClock.elapsedRealtime(),
            AlarmManager.INTERVAL_FIFTEEN_MINUTES,
            pendingIntent);

所以它启动,一切顺利......

唯一的问题是我不知道如何从它更新主UI ...我见过的所有例子都不使用AlarmManager ...所以它们不符合我的需要。

你能帮我吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您的服务无法访问UI线程。但是可以使用您在代码中引用的Context对象来调用

runOnUiThread(Runnable Action);

如果你熟悉Runnable和其他多线程能力,那么你就可以获得我的目标。

否则,

让您的服务触发Intent广播,并创建一个扩展BroadcastReceiver的嵌套类

private class updateUIReceiver extends BroadcastReceiver{

当前包含UI线程的Activity内部。然后使用

获得创意
Intent.putExtra();

告诉您的活动如何更新UI。如字符串是整数。常数运作良好。