小陌(自稱),不喜歡說廢話直接上代碼:
public void onReceive(Context context, Intent intent) {
Intent i = new Intent("cn.cibntv.stbdaemon.service");
context.startService(i);
Toast.makeText(context, "開機完成。。。", 0).show();
PendingIntent sender = PendingIntent.getService(context, 0, i, 0);
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, 1000 * 60, 1000 * 60, sender);
Toast.makeText(context, "Service satrt and create Alarm", 0).show();
Log.d("boot complete", "***Sstart service");
}
大家可以看的出這是在廣播裡調用的一個服務,沒錯,功能是:當手機開機啟動時,系統會發送開機廣播,進而啟動AlarmManager。
下面我解釋一下這個參數: setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, 1000 * 60, 1000 * 60*30, sender);
1.這個參數是當手機處于休眠狀态時,也會啟動手機的AlarmManager,進而執行任務。
2.表示AlarmManager注冊後,到1min後,第一次去執行任務。
3.表示以後30min後執行一次任務。
4.傳遞PendingIntent (延遲意圖)。
當然還有一些其他重載方法,大家可以goole一把,那麼這個定時器和Timer有什麼差別呢?我隻知道當該應用的程序被系統回收時,Timer将會失效,但是AlarmManager 肯定不會。。。由于小陌處于小白階段,是以請大家指點一二,不勝感激。。。