假设我使用BroadcastReceiver接收唤醒手机的事件(意图),即使它处于深度睡眠模式(例如套接字上的传入数据包或传入的文本消息)。然后我将收到的数据转发给IntentService进行处理。我应该使用WakeLock吗?
如果我不使用唤醒锁,我可以确定设备在我的服务的意图队列为空(因此服务停止)之前不会进入睡眠模式吗? (假设处理可能需要很长时间)。
如果需要WakeLock,那么我应该在何时何地创建并获取它,何时应该发布它?我希望在服务的意图队列为空后立即释放WakeLock。
提前谢谢
答案 0 :(得分:2)
不保证设备保持清醒足够长的时间以通过意图队列。如果您及时处理意图非常重要,那么最好的办法是在onHandleIntent
中执行以下操作:
mWakeLock.acquire(); // mWakeLock should be set to be reference counted
// (do work)
mWakeLock.acquire(1000); // hopefully long enough to get to the next item
mWakeLock.release();