2010-05-21 4 views
0

내 응용 프로그램 목표는 위치 업데이트를 저장할 때마다 20 개의 미뉴 세트를 저장하는 것입니다.기기가 깨어 있지 않아도 Android 서비스를 실행하는 방법은 무엇인가요?

서비스를 사용했는데 제대로 작동했지만 화면을 잠 그거나 자동으로 잠겨 있으면 서비스가 중지되었습니다. 잠금을 해제하면 서비스가 다시 실행됩니다. 내 코드에

하이라이트 :

서비스()

onCreat(){ 
    call timer(); 
} 

timer(){ 
    code 
} 

내 코드는 모든 조건에서 모든 시간을 실행 어떻게 만들어?

답변

0

예, 아래와 같이 setRepeating을 사용하여 AlarmManager를 사용하여 10 분마다 서비스를 시작하십시오. 서비스중인 타이머를 없애고 서비스가 oncreate 또는 onCommand에서 태스크를 완료하도록합니다.

int SECS = 1000; 
    int MINS = 60 * SECS; 
    Calendar cal = Calendar.getInstance(); 
    Intent in = new Intent(context, YourService.class); 
    PendingIntent pi = PendingIntent.getService(context, 0, in, PendingIntent.FLAG_UPDATE_CURRENT); 

    AlarmManager alarms = (AlarmManager)context.getSystemService(
      Context.ALARM_SERVICE); 
    alarms.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 
      10 * MINS, pi); 

당신은 서비스를 시작 버튼에서 온 클릭 핸들러에서이 코드를 포함하는 작업을 만들 수 있습니다. 부팅 할 때 실행하려면 장치를 사용할 때 알림을받는 브로드 캐스트 수신기에 넣어야하지만 그 자체가 다른 주제입니다.

기기가 대기 상태 일 때 서비스 및 타이머가 작동하지 않는 이유는 CPU가 꺼져 있고 코드에 깨우기 잠금이 없기 때문입니다. AlarmManager는 CPU를 약간만 가동시켜 서비스를 실행합니다.

0

기기를 깨우는 것을 포함하여 예정대로 서비스를 예약하는 올바른 방법 (예 : '통화 타이머()')은 WakefulIntentService 또는 유사한 번호와 함께 AlarmManager을 사용하는 것입니다. .

관련 문제