我有一个案例,我必须在设备连接电源N 秒后开始一些非 UI 操作。该操作也可以由用户通过 UI 启动。
我在AndroidManifest.xml中定义了一个 BroadcastReceiver ,它监听ACTION_POWER_CONNECTED。
我有一项服务需要对onStartCommand采取行动。我的问题是 - 如果广播触发操作,启动该服务的正确方法是什么?
我有两个选择:
一次性计时器任务。但是我认为这可能是错误的,因为根据文档,我无法从 BroadcastReceiver 启动任何异步任务。
重新设计服务:
- 在onStartCommand开始操作,如果操作是由用户触发的
- 启动计时器任务并在计时器拍摄时执行操作 - 与 1 中的逻辑相同。但在服务内部 - 如果操作是由广播触发的。
我倾向于 2。它会使代码更复杂一些,但它似乎是唯一正确的方法。
-列夫