WakefulBroadcastReceiver

WakefulBroadcastReceiver

我正在开发一个应用程序,需要在任何时候接收gcm通知(并向服务器发送信息),因此设备应该保持清醒以接收它,即使屏幕长时间关闭。
我正在使用WakeFulBroadcastReceiver,它应该确保设备持有唤醒锁,以便随时接收通知(我可以理解,如果我错了,请纠正我)
但我并没有调用意图服务(如the docs中所述),而是在广播接收器onreceive方法中执行工作:

public class GCMReceive extends WakefulBroadcastReceiver {
    @Override
    public void onReceive(final Context context, Intent intent) {
        /* Do my work */
    }
}

它工作正常,除非设备长时间处于非活动状态,然后停止接收通知。我是不是丢了什么东西?WakeFulBroadcastReceiver是否需要Intent服务才能正确持有唤醒锁?

最佳答案

取而代之的是我在广播接收器接收方法中执行的工作
欢迎您使用常规BroadcastReceiver,然后。WakefulBroadcastReceiver对你没有好处。但是,除非这项工作少于几毫秒,否则您真的应该让IntentService来完成这项工作。
WakeFulBroadcastReceiver是否需要Intent服务才能正确持有唤醒锁?
WakefulBroadcastReceiver在您调用WakeLock之前不会获取startWakefulService()

关于android - WakefulBroadcastReceiver是否需要IntentService来保存唤醒锁?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28198256/

10-09 01:13