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

在开始等待googelapiclient onConnected之前,我获得了唤醒锁,但是它仍然可以到达onStop!

也许我误会了唤醒锁。这就是我的工作:

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

wakeLock.acquire();


无论如何,使用这些唤醒锁让我感到不安。如果出了点问题,它可能永远都不会发布。

任何建议表示赞赏。

最佳答案

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

如果您有更长的运行任务,则需要使用Service,它将继续在后台运行。在这里可以使用WakeLock,以便当用户关闭屏幕并且服务可以完成其执行时,服务不会停止。

关于android - 如何使用唤醒锁防止onStop,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35185163/

10-10 16:09