編輯:Android開發教程
Alarm Controller演示如何在Android應用中使用Alarm事件,其功能和java.util.Timer ,TimerTask類似。但Alarm可以即使 當前應用退出後也可以做到Schedule一個任務在指定的時刻執行。
AlarmManager 用於管理Alarm事件,支持單次執行或 重復執行。 和大都數Android服務一樣,AlarmManager也是通過getSystemService來獲取服務對象:
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
與TimerTask對應的任務描述類型為PendingIntent, PendingIntent描述了將要執行的Intent,PendingIntent沒有提供構造函數,需要通過static 函數getActivity(Context, int, Intent, int), getBroadcast(Context, int, Intent, int), getService(Context, int, Intent, int) 來或得想要執行的 Activity,Broadcast,Service描述。
本例中是取得對Broadcast OneShotAlarm 和RepeatingAlarm的描述,分別對應於 單次執行時執行的Broadcast事件和多次執行時Broadcast事件,它們在AndroidManifest.xml定義為Broadcast Receiver:
<receiver android:name=”.app.OneShotAlarm” android:process=”:remote” />
<receiver android:name=”.app.RepeatingAlarm” android:process=”:remote” />
Schedule單次Alarm事件代碼如下:
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);
其中sender為對發給Broadcast Receiver OneShotAlarm的Intent的描述,當到達指定的時間(例子中為30秒),AlarmManager將給OneShotAlarm發出一 個Broadcast Intent,OneShotAlarm接到後,將使用Toast在屏幕上顯示一個消息。 如果你多次點擊“One Shot Alarm”並不會 Schedule多個Alarm事件,這是因為Schedule同一個Sender對象,後一次將取消上此Scheduled的事件。
寫完應用之後,作完單元測試和功能測試,有必要對應用的抗打擊能力做個測試,最好的方法是雇個“猴子”在測試,猴子 可以胡亂瞎按鍵,在這種情況下,你的應
Android程序中一旦加載的圖片比較多,就有可能出現Out of Memory而導致程序崩潰。這個一方面是因為Android系統本身對於每個單獨的進程有內存大小的限制(
TableLayout可以把視圖views組織成“行”或“列”。可以使用<TableRow>元素指定表格中的一
即便是無法說服Android各大廠商放棄物理導航鍵設計,但谷歌似乎已決定至少先讓Android設備擺脫電容式導航鍵的“困擾”。我們知道,谷歌是在推
這裡我們使用類比的方法,將 PreferenceActivity 與一般