2015-05-19 73 views
0

我获得超过20个错误与味精Google分析:

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){} 

} 

有什么不对,我没有?

回答

0

在内部使用获取超时值会导致WakeLock获取该锁,然后使用超时值将延迟过帐到处理程序的调用release()。

我怀疑这个错误消息与WakeLock处理程序试图在200秒超时后释放WakeLock相关,同时您的Fragment的onStop方法已经调用并释放了锁。

+0

因为我想保持屏幕,但我不想保持屏幕上,直到用户退出的应用程序,因此我使用唤醒后,N *磨机自动释放。 – IceJOKER

+0

在N *时间内以及用户关闭应用程序或手动激活屏幕后,屏幕是否保持另一种方式 – IceJOKER

+0

@IceJOKER:请参阅我的修订答案。我仍然不完全确定为什么你想在用户离开你的应用程序之后继续使用WakeLock? –