我在GoogleAnalytics中收到了20多个消息错误:
RuntimeException (@android.os.PowerManager$WakeLock:release:***)Android OS 2.3.*
谁能解释我-如何解决这个问题&为什么应用程序崩溃?
我的代码:
private PowerManager.WakeLock wakeLock;
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
PowerManager pm = (PowerManager) activity.getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "chat");
}
@Override
public void onStart() {
super.onStart();
wakeLockToggle(true);
}
@Override
public void onStop() {
super.onStop();
wakeLockToggle(false);
}
private void wakeLockToggle(boolean on){
if(wakeLock == null) return;
try {
if(on && !wakeLock.isHeld()){
wakeLock.acquire(200000);
}
if(!on && wakeLock.isHeld()) {
wakeLock.release();
}
}catch(Throwable ignore){}
}我做错了什么?
发布于 2015-05-20 05:48:05
在内部使用带有超时的acquire会导致WakeLock获取锁,然后使用超时值向处理程序发送延迟的release()调用。
我怀疑错误消息与WakeLock处理程序试图在200秒超时后释放WakeLock有关,而在此期间,您的片段的onStop方法已经调用并释放了锁。
https://stackoverflow.com/questions/30336252
复制相似问题