AlarmManager onReceive에서 서비스를 호출합니다. 아래는 구현입니다. 깨우기 잠금 장치가 제대로 구현되었는지, 내 필요를 충족시킬 수 있는지 알고 싶습니다.서비스에 깨어있는 잠금 구현
이 내 서비스 클래스에서 ONSTART 기능입니다 :
@Override
public void onStart(Intent intent, int startId) {
WakeLock wakeLock = null;
try{
PowerManager mgr = (PowerManager)getApplicationContext()
.getSystemService(Context.POWER_SERVICE);
wakeLock = mgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");
wakeLock.acquire();
//For time consuming an long tasks you can launch a new thread here
Toast.makeText(this, " Service Started", Toast.LENGTH_LONG).show();
}catch(Exception e){
}finally{
wakeLock.release();
}
}
실제로 해 보았습니까? 그렇다면 작동합니까? 귀하는 귀하의 서비스가 어떻게 작동하는지, 서비스가 무엇인지 또는 귀하의 "필요"가 무엇인지 등에 대해서는 설명하지 않았습니다. 또한 API 5에서는'onStart (...)'가 사용되지 않으므로 - onStartCommand (...)를 사용해야합니다. – Squonk
예. 나는 그것을 시도했기 때문에 내가 뭔가를 놓쳤다는 것을 알기 위해 여기에 게시 한 이유는 정상적인 조건에서 작동하지만 게시의 주된 이유는 '정상적인'것 이외의 경우에서 그 실행에 대해 아는 것이 었습니다. – User3
당신이 deprecation에 대해 지적한 것처럼 보이십시오 :) 기능을 확인하기 위해 코드를 두 번째 프로젝트로 격리했습니다. 지금은 서비스가 토스트 메시지 만 표시하지만 실제 프로그램에서는 일부 거대한 데이터베이스 manuplation을 수행하도록 구현됩니다. 백그라운드 스레드에서 수행하려는 경우,이 경우에는 비동기 작업을 사용할 수 있는지, postExecute에서 wakelock을 취소 할 수 있는지 알고 싶습니다. – User3