如何使用唤醒锁防止onStop

时间:2016-02-03 18:45:35

标签: android

我的应用收到来自服务的消息,必须在该服务上执行某些处理。在它可以这样做之前,它必须连接到另一个服务(GoogleApiClient)。在 GoogleApiClient返回连接之前,应用程序调用onStop 会发生什么情况,因此我不处理该消息。

在我开始等待googelapiclient onConnected之前我获得了一个唤醒锁,但它仍然可以进入onStop!

也许我误解了唤醒锁。这就是我的所作所为:

PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
    wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakelock");

wakeLock.acquire();

无论如何我使用这些唤醒锁感到不安。如果出现问题,最终可能会被释放。

任何建议表示赞赏。

1 个答案:

答案 0 :(得分:1)

WakeLock用于保持手机本身无法进入睡眠或休眠模式。它不会阻止您的活动停止(onStop)或完全关闭(onDestroy)。应停止运行时间超过活动的任务或忽略结果,因为它们影响的视图可能不再可用。

如果你有更长时间的运行任务,你需要使用Service,它将继续在后台运行。 此处是您可以使用WakeLock的地方,这样当用户关闭屏幕并且服务可以完成执行时,服务就不会停止。