我应该在IntentService中使用WakeLock吗?

CIT*_*TBL 5 android wakelock

假设我使用BroadcastReceiver来接收唤醒手机的事件(意图),即使它处于深度睡眠模式(例如套接字上的传入数据包或传入的文本消息).然后我将收到的数据转发给IntentService进行处理.我应该使用WakeLock吗?

如果我不使用唤醒锁,我可以确定在我的服务的意图队列为空(因此服务停止)之前设备不会进入睡眠模式吗?(假设处理可能需要很长时间).

如果需要WakeLock,那么我应该在何时何地创建并获取它,何时应该发布它?我希望在服务的意图队列为空后立即释放WakeLock.

先感谢您

vt.*_*vt. 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();
Run Code Online (Sandbox Code Playgroud)

  • @smsrecv:我已将此模式封装在“WakefulIntentService”中:https://github.com/commonsguy/cwac-wakeful (4认同)