我有一个案例,我必须在电源连接到设备后N秒启动一些非UI操作 N秒。该操作也可以由用户通过UI启动。
我在 AndroidManifest.xml 中定义了一个BroadcastReceiver,它侦听 ACTION_POWER_CONNECTED 。
我有一项服务需要对 onStartCommand 采取必要的措施。我的问题是 - 在广播触发行动的时候,启动该服务的正确方法是什么?
我有两个选择:
一次性计时器任务。但是我认为这可能是错误的,因为根据文档,我无法从BroadcastReceiver启动任何异步任务。
重新设计服务:
我倾向于2.它会使代码变得更复杂,但它似乎只是正确的方式。
-Lev
答案 0 :(得分:1)
正确的方法是#2。那是因为一旦你离开onReceive
申请流程就可能会被杀死。在这种情况下,TimerTask
无效。
作为替代解决方案,使用AlarmManager
及其set
函数来安排待处理的服务意图。这可能是您案例中最好的解决方案。