2012-10-10 6 views
0

내 응용 프로그램에서는 인터넷에서 정보를 다운로드하고 알림을 표시하는 서비스를 트리거하는 알람이 있습니다.Android : alarmmanager에 의해 작동되는 서비스에서 wakelock 사용

MyActivity이 포함되어 있습니다 : 여기

내 코드의 단순화 된 버전의

  Calendar cal = Calendar.getInstance(); 
      cal.add(Calendar.SECOND, 20); 
      Intent intent = new Intent(this, AlarmService.class); 
      PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, 0); 
      AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
      alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 20000, pendingIntent); 

그리고 AlarmService은 다음과 같습니다 여파를 사용할 때 난 정말 이해가 안

public class AlarmService extends Service { 

    @Override 
    public void onCreate() { 

     new myAsyncTask().execute(); 

    } 

    private class myAsyncTask extends AsyncTask<Void, Void, Void> { 

     @Override 
     protected Void doInBackground(Void... args) { 

      //Download stuff 

      return null; 
     } 

     @Override 
     protected void onPostExecute(Void arg) { 
      //Show notification 
     } 
    } 
} 

- 잠금, 그래서 내 질문 :이 경우, 내가 깨우기 잠금을 사용해야합니까? 그렇다면, 어디서 시작하고 멈추어야합니까?

덕분에 사전에

답변

2

예, 당신은 당신의 서비스가 작업을 완료 할 수 있도록하기 위해 WakeLock를 사용해야합니다.

디자인 요구 사항을 충족하는 IntentService을 사용하는 경우 WakefulIntentService을 살펴 보겠습니다. 사용자를 대신하여 알람 및 WakeLock을 관리하므로 쉽게 설정할 수 있습니다. 알람이 울리면 WakeLock을 가져오고, 서비스가 끝나면 WakefulIntentService 라이브러리가 알람을 해제합니다.

이 경로를 사용하는 경우 AsyncTask를 사용하지 않으려는 것입니다. WakeLock을 유지하려면 서비스를 활발하게 사용 중이어야합니다 (doWakefulWork() 방법).

+0

감사합니다, 어떤 파일을 다운로드해야합니까? – Xander

+0

해당 GitHub 링크의 "다운로드"섹션에서 사용할 수있는 .jar 파일이 있습니다. README에는 모든 설정 단계가 있습니다. 시작하려면 소스가 필요하지 않을 것입니다. – acj

관련 문제