【发布时间】:2013-10-11 03:47:25
【问题描述】:
我的应用需要在每天的特定时间从网络上获取一些数据。所以我使用 AlarmManager 来安排任务并且工作正常。
但在查看各种示例时,似乎有两种方法可以处理待处理意图时的 AlarmManager。
当警报响起时,使用PendingIntent.getBroadcast() 调用广播接收器,并在该接收器内部启动执行实际工作的服务。
另一种方法是使用PendingIntent.getService() 并在警报响起时直接调用服务。
有人可以向我解释这两种方法之间的区别,以便我决定依赖哪一种吗?
编辑:还有一个问题是使用 getService() 时在哪里获取唤醒锁?
例如,当使用广播接收器时,我在 onReceive() 中有以下行:
WakeReminderIntentService.acquireStaticLock(context);
如果我直接调用服务,我应该如何获取唤醒锁:
PendingIntent pi = PendingIntent.getService(this, 0, new Intent(this, OnAlarmReceiver.class), PendingIntent.FLAG_UPDATE_CURRENT);
我应该直接从服务中获取它吗?
【问题讨论】:
-
无论哪种方式都无所谓。您可以使用 IntentService 或 Service,或者本地或全局广播。你应该能够在所有这些中做同样的事情。
标签: android service alarmmanager