我的应用收到来自服务的消息,必须在该服务上执行某些处理。在它可以这样做之前,它必须连接到另一个服务(GoogleApiClient)。在 GoogleApiClient返回连接之前,应用程序调用onStop 会发生什么情况,因此我不处理该消息。
在我开始等待googelapiclient onConnected之前我获得了一个唤醒锁,但它仍然可以进入onStop!
也许我误解了唤醒锁。这就是我的所作所为:
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakelock");
wakeLock.acquire();
无论如何我使用这些唤醒锁感到不安。如果出现问题,最终可能会被释放。
任何建议表示赞赏。
答案 0 :(得分:1)
WakeLock
用于保持手机本身无法进入睡眠或休眠模式。它不会阻止您的活动停止(onStop
)或完全关闭(onDestroy
)。应停止运行时间超过活动的任务或忽略结果,因为它们影响的视图可能不再可用。
如果你有更长时间的运行任务,你需要使用Service
,它将继续在后台运行。 此处是您可以使用WakeLock
的地方,这样当用户关闭屏幕并且服务可以完成执行时,服务就不会停止。