mar*_*lar 41 service android alarmmanager
我的应用需要在每天的特定时间从网上获取一些数据.所以我使用AlarmManager来安排任务,这是正常的.
但是在查看各种示例时,似乎有两种方法可以处理AlarmManager的待处理意图.
一个用于PendingIntent.getBroadcast()在闹钟响起时呼叫广播接收器,并且在该接收器内部开始执行实际工作的服务.
另一种方法是PendingIntent.getService()在警报响起时直接使用和调用服务.
有人可以向我解释两种方法之间的区别,以便我可以决定依赖哪一种方法吗?
编辑:还有一个问题是在使用getService()时获取唤醒锁定的位置?
例如,当使用BroadcastReceiver时,我在onReceive()中有以下行:
WakeReminderIntentService.acquireStaticLock(context);
Run Code Online (Sandbox Code Playgroud)
如果我直接调用服务,我应该如何获得唤醒锁:
PendingIntent pi = PendingIntent.getService(this, 0, new Intent(this, OnAlarmReceiver.class), PendingIntent.FLAG_UPDATE_CURRENT);
Run Code Online (Sandbox Code Playgroud)
我应该简单地从服务中获取它吗?
Vin*_*kla 19
一个用于在闹钟响起时PendingIntent.getBroadcast()调用a broadcast receiver,在该接收器内部开始执行实际工作的服务.
它在启动服务方面还有一个步骤
另一种方法是PendingIntent.getService()在警报响起时直接使用和调用服务.
那么你应该使用第二种方法,因为它减少了你执行的一步.
sch*_*rer 13
阅读你的编辑我认为你发现了自己:如果你想确保你的服务在使用时启动AlarmManager,你最好先绕道发送到接收器并在那里获得唤醒锁定.
否则,在启动所请求的服务之前,手机可能会休眠.这就是我所说的javadoc,AlarmManager我也是谷歌工程师在帖子中读到的.
所以现在为你的编辑:什么时候获得锁定?使用接收器的重点是获取接收器onReceive()方法内的锁定,因为Android在执行此方法时不会入睡.
例如,请看这个问题.
| 归档时间: |
|
| 查看次数: |
18023 次 |
| 最近记录: |