小编Tim*_*aly的帖子

WakeLock仍在举行时完成

pmkeepScreenOn变量是全局定义.

我在OnCreate方法中获取了PowerManager.WakeLock:

pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
keepScreenOn = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_LOCK,"tpd");
Run Code Online (Sandbox Code Playgroud)

在我的onStart,onResume和onRestart中我抓住了锁

if (keepScreenOn == null) {
    keepScreenOn = pm.newakeLock(PowerManager,SCREEN_BRIGHT_LOCK,"tpd");
}
keepScreenOn.acquire();
Run Code Online (Sandbox Code Playgroud)

在我的onDestroy,onPause和onStop中,我发布了锁定:

if (keepScreenOn != null) {
  keepScreenOn.release();
  keepScreenOn = null
}
Run Code Online (Sandbox Code Playgroud)

我的应用程序退出后,我得到一个失败的屏幕,adb抱怨

java.lang.Exception:WakeLock在仍然持有时完成:tpd

跟踪显示我在退出前释放了锁.我错过了什么?

有没有办法退出应用,而不穿过的至少一个 onPause,onStoponDestroy.我可以看到应用程序 release()经常被称为acquire(),因此即使唤醒锁被引用计数,它仍然应该没有引用.

android wakelock android-activity

20
推荐指数
2
解决办法
1万
查看次数

标签 统计

android ×1

android-activity ×1

wakelock ×1