2012-06-06 5 views
1

버튼을 클릭하면 WakeLock이 켜지고 작동합니다. 하지만 다시 클릭하면 WakeLock을 사용 중지한다고 가정하지만 대신 응용 프로그램이 중지됩니다! 어떤 도움도 감사 하겠고 이미지가 바뀌기 때문에 그 부분이 잘 작동하기 때문에 그 부분을 알지 못합니다! :) Heres는 내 코드 :WakeLock을 해제하는 동안 강제 종료 하시겠습니까?

PowerManager.WakeLock wl; //This is before my oncreate 
int stayAwake = 0; //This is before my oncreate 

    ((Button) findViewById(R.id.sleepLock)).setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
    PowerManager pm = (PowerManager) getSystemService (Context.POWER_SERVICE); 
    wl = pm.newWakeLock (PowerManager.FULL_WAKE_LOCK, "My Tag"); 
     if (stayAwake == 0) { 
     ((Button) findViewById(R.id.sleepLock)).setBackgroundResource(R.drawable.awake); 
     stayAwake = 1; 
     wl.acquire(); 
     }else { 
      ((Button) findViewById(R.id.sleepLock)).setBackgroundResource(R.drawable.sleep); 
      stayAwake = 0; 
      wl.release(); 
     } 

     // TODO Auto-generated method stub 

    } 
}); 

로그 캣 :

06-06 00:44:25.206: W/dalvikvm(3855): threadid=1: thread exiting with uncaught exception (group=0x40a031f8) 
06-06 00:44:25.230: E/AndroidRuntime(3855): FATAL EXCEPTION: main 
06-06 00:44:25.230: E/AndroidRuntime(3855): java.lang.RuntimeException: WakeLock under-locked My Tag 
06-06 00:44:25.230: E/AndroidRuntime(3855):  at android.os.PowerManager$WakeLock.release(PowerManager.java:325) 
06-06 00:44:25.230: E/AndroidRuntime(3855):  at android.os.PowerManager$WakeLock.release(PowerManager.java:300) 
06-06 00:44:25.230: E/AndroidRuntime(3855):  at com.something.something.SavedGame$5.onClick(SavedGame.java:259) 
06-06 00:44:25.230: E/AndroidRuntime(3855):  at android.view.View.performClick(View.java:3511) 
06-06 00:44:25.230: E/AndroidRuntime(3855):  at android.view.View$PerformClick.run(View.java:14105) 
06-06 00:44:25.230: E/AndroidRuntime(3855):  at android.os.Handler.handleCallback(Handler.java:605) 
06-06 00:44:25.230: E/AndroidRuntime(3855):  at android.os.Handler.dispatchMessage(Handler.java:92) 
06-06 00:44:25.230: E/AndroidRuntime(3855):  at android.os.Looper.loop(Looper.java:137) 
06-06 00:44:25.230: E/AndroidRuntime(3855):  at android.app.ActivityThread.main(ActivityThread.java:4424) 
06-06 00:44:25.230: E/AndroidRuntime(3855):  at java.lang.reflect.Method.invokeNative(Native Method) 
06-06 00:44:25.230: E/AndroidRuntime(3855):  at java.lang.reflect.Method.invoke(Method.java:511) 
06-06 00:44:25.230: E/AndroidRuntime(3855):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787) 
06-06 00:44:25.230: E/AndroidRuntime(3855):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554) 
06-06 00:44:25.230: E/AndroidRuntime(3855):  at dalvik.system.NativeStart.main(Native Method) 
+1

'그냥 충돌'은 의미있는 오류 보고서가 아닙니다. ADB를 연결하고 logcat을 실행하고 자세한 충돌 메시지를 게시하십시오. –

+0

게시물 충돌이보고 – Sameer

+0

@Sameer 예, 잘 작동합니다. –

답변

2

당신이

변경에 ClickListener 다시 버튼을 다시 초기화하고 설정하지 않는 한 어떤 기준을 가지고 있지 않는 버튼을 잠금 해제하는 동안 코드는

Button btn=(Button) findViewById(R.id.sleepLock); 
PowerManager.WakeLock wl; //This is before my oncreate 
int stayAwake = 0; //This is before my oncreate 

btn.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     PowerManager pm = (PowerManager) getSystemService (Context.POWER_SERVICE); 
     wl = pm.newWakeLock (PowerManager.FULL_WAKE_LOCK, "My Tag"); 
     if (stayAwake == 0) { 
      btn.setBackgroundResource(R.drawable.awake); 
      stayAwake = 1; 
      wl.acquire(); 
     } else { 
      btn.setBackgroundResource(R.drawable.sleep); 
      stayAwake = 0; 
      wl.release(); 
     } 
    } 
}); 

이제 코드는 잘

0 작동합니다
+0

감사합니다. –