2017-04-07 4 views
0

많은 기사를 읽었지만 나에게 적합하지 않은 것 같습니다!특정 시간에 작업을 실행하는 Android 알람 관리자

매일 AlarmManager를 사용하여 반복 작업을 7:15에 예약해야합니다. 다음 메소드는 액티비티에 설정되고이를 위해 브로드 캐스트 리시버를 등록합니다!

문제는 내가 앱을 실행할 때 설정 한 시간에 관계없이 즉시 실행되지만 (7:15)에 실행되지 않는 것입니다.

아이디어가 있으십니까?

+0

클래스'NotifyUpdate'는'Service' 또는'BroadcastReceiver'입니까? – devnull69

+0

답장을 보내 주셔서 감사합니다! 그것은 BroadcastReceiver입니다 –

+0

경보가 잘하는 것 같습니다. 편차가 다른 어딘가에있을 수 있습니다 ... 수동으로 다른 곳에서 BroadcastReceiver의 메소드를 호출하지 않았습니까? 또한 Android6 + Doze 모드는 최적화 예외 목록에 앱을 추가하지 않은 경우 AlarmManager와 충돌 할 수 있습니다. – devnull69

답변

0

알람

Calendar now = Calendar.getInstance(); 
if (updateTime.before(now)) { 
      updateTime.add(Calendar.DAY_OF_MONTH, 1); // if its in the past increment 
} 

alarms.setRepeating(alarms.RTC_WAKEUP, updateTime.getTimeInMillis(), alarms.INTERVAL_DAY, fireAlarm); 

당신은 즉시 시간에 따라하지 트리거가 있다고을 설정하기 전에이보십시오. updateTime-object가 과거의 시간에 참조하기 때문에 발생합니다. 목표는 앞으로 알람을 7:15로 설정하는 것입니다. 이렇게하면 즉시 트리거되는 것을 피할 수 있습니다.

+0

답변에 설명을 추가하십시오. – jmattheis

+0

답을 수정하여주십시오. – jmattheis

+0

내 코드에서 캘린더 인스턴스를 가져 와서 updateTime에 저장했습니다! 다른 인스턴스를 가져 와서 지금 저장해야합니까? !! –

관련 문제