我的应用收到来自服务的消息,必须在该消息上执行一些处理。在此之前,它必须连接到另一个服务(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/