0

我正在使用 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……所以它们不符合我的需求。

请你帮助我好吗?

谢谢!

4

1 回答 1

0

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

runOnUiThread(Runnable Action);

如果您熟悉 Runnable 和其他多线程功能,那么您将了解我的目标。

否则,

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

private class updateUIReceiver extends BroadcastReceiver{

在当前持有你的 UI 线程的 Activity 中。然后创造性地使用

Intent.putExtra();

告诉您的活动如何更新 UI。比如字符串就是整数。常量很好用。

于 2012-07-11T15:09:50.453 回答