【发布时间】:2011-07-11 20:39:16
【问题描述】:
我有一个案例,我必须在设备连接电源后 N 秒 开始一些非 UI 操作。用户也可以通过 UI 启动该操作。
我在 AndroidManifest.xml 中定义了一个 BroadcastReceiver,它监听 ACTION_POWER_CONNECTED。
我有一项服务需要对 onStartCommand 执行操作。我的问题是 - 在广播触发动作的情况下,启动该服务的正确方法是什么?
我有两个选择:
一次性计时器任务。但是我认为这可能是错误的,因为根据文档,我无法从 BroadcastReceiver 启动任何异步任务。
-
重新设计服务:
- 如果操作是由用户触发的,则在 onStartCommand 处开始操作
- 启动计时器任务并在计时器触发时执行操作 - 与 1 中的逻辑相同。但在服务内部 - 如果操作是由广播触发的。
我倾向于2。它会使代码更复杂一些,但似乎这是唯一正确的方法。
-Lev
【问题讨论】:
标签: android service timer broadcastreceiver timertask