【AlarmManager】使用AlarmManager定時任務
阿新 • • 發佈:2018-12-23
下面的程式碼是使用Android AlarmManager類可以完成定時執行任務的樣例程式碼。
首先建立Intent和日曆(Calendar)物件,然後使用AlarmManager去執行這個intent。
程式碼:
new Intent(getBaseContext(), some_service.class);
PendingIntent pendingIntent = PendingIntent
.getService(getBaseContext(), 0, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
// 取消以前同類型的提醒
alarmManager.cancel(pendingIntent);
Calendar calendar = Calendar.getInstance();
Calendar currentDate = Calendar.getInstance();
calendar.add(Calendar.HOUR, 24);
calendar.set(Calendar.HOUR_OF_DAY, 07);
calendar.set(Calendar.MINUTE, 00);
calendar.set(Calendar.SECOND, 00);
// 設定每天在指定的時間執行alert,注有RTC和RTC_WAKE後者在睡眠時也能執行
alarmManager.setRepeating(AlarmManager.RTC,calendar.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, pendingIntent);
以下是兩個採用AlarmManager定時任務的例項PushService.class是一個自己實現的處理服務替換成自己的一個就可以
/** 使用AlarmService獲取推送資訊 */ public static void startAlarmPush(Context context, long intervalMillis) { AlarmManager am = (AlarmManager) context .getSystemService(Service.ALARM_SERVICE); Intent intent = new Intent(context, PushService.class); PendingIntent p_intent = PendingIntent.getService(context, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT); am.setRepeating(AlarmManager.RTC_WAKEUP, 0, intervalMillis, p_intent); } /** 停止獲取推送資訊的AlarmService */ public static void stopAlarmPush(Context context) { AlarmManager am = (AlarmManager) context .getSystemService(Service.ALARM_SERVICE); Intent intent = new Intent(context, PushService.class); PendingIntent p_intent = PendingIntent.getService(context, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT); am.cancel(p_intent); }
原始碼下載: