2013-07-11 2 views
0

나는 타이머를 원했고 그 장치가 잠자기 상태 일 때 작동하지 않는다는 것을 발견했습니다. AlarmManager을 사용했지만 작동하지 않습니다. 나는 여전히 도움이되지 않은 서비스를 시도했다. 그런 다음 을 partial_wake_lock으로 시도했습니다. 그것은 처음에는 잘 작동했지만 갑자기 PowerManager 또는 WakeLock과 관련된 코드를 변경하지 않고 실패했습니다. 이제 약 1.5 분 동안 작동합니다.wake_lock이 작동하지 않는 이유는 무엇입니까?

코드는 다음과 같습니다

private void acquireWakeLock(){ 
     PowerManager pm=(PowerManager)getSystemService(Context.POWER_SERVICE); 
     wl=pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, this.getClass().getCanonicalName()); 
     wl.acquire(); 
    } 
    private void releaseWakeLock(){ 
     if(wl!=null&&wl.isHeld()){ 
      wl.release(); 
      wl=null; 
     } 
    } 

당신은 특별한 아무것도 볼 수 있듯이

. 그리고 기본적으로 나는 이런 식으로했다 :

//private members,including a wakelock,a handler and a runnable, etc 
onCreate{ 
acquireWakeLock(); 
init(); 
handler.postdelayed(runnable,time); 
} 
//some functions... 
a function //called in runnable, which does all work before finish() and it calls releaseWakeLock() 

나는 활동의 onCreate에서 획득하는 함수를 호출하고, 모든 작업이 완료되었을 때 그것을 발표했다. 디버깅 할 때 잠금 장치가 이미 열려있는 것을 볼 수 있지만 플러그를 꽂지 않으면 1.5 분 후에 아무 작업도 수행하지 않습니다.

어떻게 작동시킬 수 있습니까? 아니면 어리석은 잠자기 대신 잘 작동하는 솔루션이 있습니까? ------ update ----- 필자는 필요한 모든 권한을 가지고 있으며 WakeLock이 이미 acquire 함수를 호출 한 후에 개최되었다고 언급 했으므로 Watch에서 볼 수 있습니다.

답변

0

매니페스트에서 허락을 잊어 버리시겠습니까?

<uses-permission android:name="android.permission.WAKE_LOCK" /> 
+0

나는 필요한 모든 권한을 얻습니다. 그래서 나는 혼란 스럽습니다. –

관련 문제