編輯:關於Android編程
本文實例講述了Android中AlarmManager基本用法。分享給大家供大家參考,具體如下:
AlarmManager的作用文檔中的解釋是:在特定的時刻為我們廣播一個指定的Intent。簡單的說就是我們設定一個時間,然後在該時間到來時,AlarmManager為我們廣播一個我們設定的Intent。
對應AlarmManager更深層的了解可以參考:
http://www.jb51.net/article/90491.htm
android提供了四種類型的鬧鐘:
① ELAPSED_REALTIME
在指定的延時過後,發送廣播,但不喚醒設備。
② ELAPSED_REALTIME_WAKEUP
在指定的演示後,發送廣播,並喚醒設備
延時是要把系統啟動的時間SystemClock.elapsedRealtime()算進去的,具體用法看代碼。
③ RTC
在指定的時刻,發送廣播,但不喚醒設備
④ RTC_WAKEUP
在指定的時刻,發送廣播,並喚醒設備
AlarmManager提供的方法:
1. void set(int type, long triggerAtTime, PendingIntent operation)
設置一個鬧鐘
2. void setRepeating(int type, long triggerAtTime, long interval, PendingIntent operation)
設置一個會重復的鬧鐘
3. void setInexactRepeating(int type, long triggerAtTime, long interval, PendingIntent operation)
設置一個重復鬧鐘的不精確版本,它相對而言更節能(power-efficient)一些,因為系統可能會將幾個差不多的鬧鐘合並為一個來執行,減少設備的喚醒次數。
內置的幾個interval為:
INTERVAL_FIFTEEN_MINUTES
INTERVAL_HALF_HOUR
INTERVAL_HOUR
INTERVAL_HALF_DAY
INTERVAL_DAY
如果你將其設為DAY,那麼可能這一天中的所有鬧鐘都會被合並掉。
void cancel(PendingIntent operation)
取消一個設置的鬧鐘
void setTimeZone(String timeZone)
設置系統的默認時區。需要android.permission.SET_TIME_ZONE權限
// 首先創建Receiver public class AlarmReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "alarm", Toast.LENGTH_SHORT).show(); } }
// manifest中申明,並不需要intent-filter,我們是明確指定發到哪個receiver的 <receiver android:name="yuan.receivers.AlarmReceiver" />
PendingIntent:簡單的說就是在Intent上在加個指定的動作。Intent的話,我們還需要在執行startActivity、startService或sendBroadcast才能使Intent有用。而PendingIntent的話就是將這個動作包含在內了,如PendingIntent.getBroadcast就包含了sendBroadcast的動作。
5s後發送指定廣播
AlarmManager alarmMgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE); Intent intent = new Intent(getApplicationContext(), AlarmReceiver.class); int requestCode = 0; PendingIntent pendIntent = PendingIntent.getBroadcast(getApplicationContext(), requestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT); // 5秒後發送廣播,只發送一次 int triggerAtTime = SystemClock.elapsedRealtime() + 5 * 1000; alarmMgr.set(AlarmManager.ELAPSED_REALTIME, triggerAtTime, pendIntent);
5s後發送指定廣播,然後每個10秒重復發送廣播
AlarmManager alarmMgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE); Intent intent = new Intent(getApplicationContext(), AlarmReceiver.class); int requestCode = 0; PendingIntent pendIntent = PendingIntent.getBroadcast(getApplicationContext(), requestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT); // 5秒後發送廣播,然後每個10秒重復發廣播。廣播都是直接發到AlarmReceiver的 int triggerAtTime = SystemClock.elapsedRealtime() + 5 * 1000; int interval = 10 * 1000; alarmMgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerAtTime, interval, pendIntent);
取消一個鬧鐘
AlarmManager alarmMgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE); Intent intent = new Intent(getApplicationContext(), AlarmReceiver.class); PendingIntent pendIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); // 與上面的intent匹配(filterEquals(intent))的鬧鐘會被取消 alarmMgr.cancel(pendIntent);
更多關於Android相關內容感興趣的讀者可查看本站專題:《Android開發入門與進階教程》、《Android調試技巧與常見問題解決方法匯總》、《Android多媒體操作技巧匯總(音頻,視頻,錄音等)》、《Android基本組件用法總結》、《Android視圖View技巧總結》、《Android布局layout技巧總結》及《Android控件用法總結》
希望本文所述對大家Android程序設計有所幫助。
android_apk的在線安裝,除了要設計Android 客戶端的代碼外,還要搭建服務器的代碼,仿真實現中Android軟件的在線升級。 Android 客
在程序開發中,為了讓程序表現的更快更流暢,我們會使用多線程來提升應用的並發性能。但多線程並發代碼是一個棘手的問題,線程的生命周期處理不好就會造成內存洩漏。 new
Fiddler是一個HTTP協議調試代理工具,在開發網絡應用的時候經常會用到,其最基本的作用是能抓HTTP的數據包,當然它還有更高級的用法,如添加斷點、修改請求與相應的數
最近在開發安卓的過程中發現ListView無疑是一個經常使用的組件,而提到ListView又不得不提一下適配器了,我打算用幾個實例,由淺入深的向大家仔細講解一下適配器的使