5

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

如果我不使用唤醒锁,我能否确保设备不会进入睡眠模式,直到我的服务的意图队列为空(因此服务停止)?(假设处理可能需要很长时间)。

如果需要 WakeLock,那么我应该在何时何地创建和获取它,以及何时释放它?我想在服务的意图队列为空后立即释放 WakeLock。

先感谢您

4

1 回答 1

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();
于 2011-05-22T21:19:01.033 回答