天天看點

用AlarmManager(鬧鐘)做一個定時器

小陌(自稱),不喜歡說廢話直接上代碼:

                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 肯定不會。。。由于小陌處于小白階段,是以請大家指點一二,不勝感激。。。