Android API Demos學習 – Alarm部分

1. Alarm Controller
Alarm是Android中的鬧鈴服務。允許我們定時執行我們的程序,隻要設備沒有關機或者重啟,都會被喚醒執行。
 
 
1.1 One Shot Alarm
例子展示瞭30秒後發送一個廣播,接收後彈出一個提示信息。
Intent intent = new Intent(AlarmController.this, OneShotAlarm.class);
PendingIntent sender = PendingIntent.getBroadcast(AlarmController.this,
                    0, intent, 0);
 // We want the alarm to go off 30 seconds from now.
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 30);
// Schedule the alarm!
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);
 
 
PendingIntent是intent的一個描述,可以在一段時間後調用它。
使用getSystemService方法獲得AlarmManager 。
在OneShotAlarm.java中的onReceive方法可以接收這個intent。
public void onReceive(Context context, Intent intent)
    {
        Toast.makeText(context, R.string.one_shot_received, Toast.LENGTH_SHORT).show();
    }
 
 
 
1.2 Repeating Alarm
每十五秒發送一個廣播,接收後彈出一個提示信息。
long firstTime = SystemClock.elapsedRealtime();
firstTime += 15*1000;
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
 am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
                            firstTime, 15*1000, sender);
 
 
SystemClock.elapsedRealtime()方法取得從開機到現在的毫秒數。
setRepeating (int type, long triggerAtTime, long interval, PendingIntent operation)方法中triggerAtTime是第一次執行的時間,interval是循環的間隔。
am.cancel(sender);
停止循環執行。 www.aiwalls.com
 
 
2. Alarm Service
每隔30秒啟動一次服務。
mAlarmSender = PendingIntent.getService(AlarmService.this,
                0, new Intent(AlarmService.this, AlarmService_Service.class), 0);
 
 
其他方法和上面很相似,隻是這個例子是啟動一個service,通常service用做處理時間比較長的任務。
am.cancel(mAlarmSender);
停止的方法也一樣。

發佈留言