2012-03-30 4 views
1

this 내가 직면 한 문제에 대해 참조하십시오 .... 나의 문제에 대한 답장을 한 사람이 제안한 + 내 추가 연구에서 보여 주었던 것은 AlarmManager를 사용하여 해결해야한다는 것입니다. 내 잠 &의 TimerTask 문제가 ... 이후, 난과 알람 관리기와 함께 PendingIntent를 활용하는 기존 코드 변경 시작한 다음 알람 관리기 문서를 여러 번 읽고 ... 서비스에 Thread thr = new Thread(null, mTask, "ServiceName");안드로이드 개발 : AlarmManager 일정과 서비스

을, 내가 다시 예약하는 방법을 잘 모릅니다 AlarmManager ... 나는 프로필 스위처 응용 프로그램에서 일하고 있습니다. 다양한 인터벌을 할 것입니다. (제 문제 스레드에서 설명한 것처럼) ...

누구든지 제안 사항이 있습니까?

+0

현재일회용 알람을 만들고 나서 만료가 만료되면 새로운 업데이트 된 간격으로 새 것을 만드십시오 ... –

답변

4

내가 기존 알람을 제거하기 위해 알람 관리기

사용 cancel() 일정을 변경하는 방법을 잘 모릅니다, 알람 일정을 set() 또는 다른 set...() 방법 중 하나를 사용하십시오. 알람을 "다시 예약"하려면 이전을 취소하고 새 알람을 만듭니다.

+0

항상이 작업을 수행합니까? 때로는 취소를 사용하고 내 보류중인 새 시간을 설정합니다 ... 작동하지 않거나 알람이 10 분 후에 트리거됩니다. – yeahman

0

당신이 같은 요청 코드를 intentString 같은 를 사용하는 경우 알람이 덮어 쓰기됩니다. 당신의 의도에

, 다음과 같은 플래그를 사용할 수 있습니다 : 알람 자체에 관련

PendingIntent.FLAG_UPDATE_CURRENT 
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, notification.getId(), new Intent(intentString), PendingIntent.FLAG_UPDATE_CURRENT); 

long startDateTimeMillis = notification.getDateTime().toDateTime().getMillis(); 

MyApplication.alarmManager().setExact(AlarmManager.RTC_WAKEUP, 
        startDateTimeMillis, 
        pendingIntent); 

, 당신은 ((setExact 방법을 사용) 또는 설정할 수 있습니다) 그리고 당신은 그들에 대해 검색 할 수 있습니다 어느 것이 더 잘 맞는지 확인하십시오.