我正在嘗試製作一個應用程序,它必須以固定的時間間隔執行某個任務。經過大量研究和嘗試,我認爲最好使用AlarmManager類,因爲它在內存和電池使用方面的效率,而不是在服務中運行定時器。如何正確使用AlarmManager類以固定的時間間隔執行任務?
現在有一些方面,我有問題。
一個是我應該如何訪問之前運行中創建的報警對象,以便能夠取消它?
Intent intent = new Intent(getActivity(), MyService.class);
PendignIntent pintent = PendingIntent.getService(getActivity(), 0, intent, 0);
AlarmManager alarm = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
alarm.setInexactRepeating(AlarmManager.RTC_WAKEUP, SystemClock.elapsedRealtime() +
20000, AlarmManager.INTERVAL_FIFTEEN_MINUTES, pintent);
有辦法知道是否設置了報警,但它不能給你報警本身。
boolean alarmUp = (PendingIntent.getService(getActivity(), 0, new Intent(getActivity(), MyService.class), PendingIntent.FLAG_NO_CREATE) != null);
if(alarmUp){
//How to cancel the alarm
}else {
Toast.makeText(getActivity(), "Alarm not running", Toast.LENGTH_SHORT).show();
}