日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 编程下 AlarmManager

發布時間:2023/12/1 Android 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 编程下 AlarmManager 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對應 AlarmManager 有一個 AlarmManagerServie 服務程序,該服務程序才是正真提供鬧鈴服務的,它主要維護應用程序注冊的各類鬧鈴并適時的設置即將觸發的鬧鈴給鬧鈴設備 ( 在系統中,Linux 實現的設備名為 ”/dev/alarm” ) ,并且一直監聽鬧鈴設備,一旦有鬧鈴觸發或者是鬧鈴事件發生,AlarmManagerServie 服務程序就會遍歷鬧鈴列表找到相應的注冊鬧鈴并發出廣播。該服務程序在系統啟動時被系統服務程序 system_service 啟動并初始化鬧鈴設備 ( /dev/alarm ) 。當然,在 JAVA 層的 AlarmManagerService 與 Linux Alarm 驅動程序接口之間還有一層封裝,那就是 JNI。(參考官方文檔:AlarmManager | Android Developers)

AlarmManager 將應用與服務分割開來后,使得應用程序開發者不用關心具體的服務,而是直接通過 AlarmManager 來使用這種服務。這也許就是客戶/服務模式的好處吧。AlarmManager 與 AlarmManagerServie 之間是通過 Binder 來通信的,他們之間是多對一的關系。

AlarmManager 提供了 8 個與之相關的方法:

? AlarmManager Public Methods (方法)

  void  

  cancel(PendingIntent operation)

  取消參數匹配的鬧鈴

void

  set(int type, long triggerAtMillis, PendingIntent operation)

  注冊一個新的鬧鈴

void

  setExact(int type, long triggerAtMillis, PendingIntent operation)

  注冊一個新的鬧鈴,這個鬧鈴將在指定的時間被準確的執行

void

  setInexactRepeating(int type, long triggerAtMillis, long intervalMillis, PendingIntent operation)

  注冊一個對觸發時間并不是很精準的鬧鈴,例如,一個鬧鈴每小時都會重復,但不一定都是在每個小時的最開始被觸發

void

  setRepeating(int type, long triggerAtMillis, long intervalMillis, PendingIntent operation)

  注冊一個重復類型的鬧鈴

void

  setTime(long millis)

  設定系統時鐘時間

void

  setTimeZone(String timeZone)

  設置系統默認時區

void

  setWindow(int type, long windowStartMillis, long windowLengthMillis, PendingIntent operation)

  注冊一個鬧鈴,這個鬧鈴將在給定的時間窗口內被觸發

?

? Constants (類型)

  public static final int ELAPSED_REALTIME

  Constant Value: 3 (0x00000003)

  這種類型的鬧鈴不會喚醒系統,如果這種鬧鈴在系統休眠狀態終止,它會在系統下次喚醒的時候被觸發。該種鬧鈴所用的時間是相對時間,是從系統啟動后開始

  計時的,包括睡眠時間,可以通過調用 SystemClock.elapsedRealtime() 獲得。

  public static final int ELAPSED_REALTIME_WAKEUP

  Constant Value: 2 (0x00000002)

  這種類型的鬧鈴能在終止的時候喚醒系統,用法同 ELAPSED_REALTIME

  public static final long INTERVAL_DAY

  Constant Value: 86400000 (0x0000000005265c00)

  public static final long INTERVAL_FIFTEEN_MINUTES

  Constant Value: 900000 (0x00000000000dbba0)

  public static final long INTERVAL_HALF_DAY

  Constant Value: 43200000 (0x0000000002932e00)

  public static final long INTERVAL_HALF_HOUR

  Constant Value: 1800000 (0x00000000001b7740)

  public static final long INTERVAL_HOUR

  Constant Value: 3600000 (0x000000000036ee80)

  public static final int RTC

  Constant Value: 1 (0x00000001)

  這種類型的鬧鈴不會喚醒系統,如果這種鬧鈴在系統休眠狀態終止,它會在系統下次喚醒的時候被觸發。該鬧鈴所用的時間是絕對時間,可以通過調用

  System.currentTimeMillis() (wall clock time in UTC) 獲得。

  public static final int RTC_WAKEUP

  Constant Value: 0 (0x00000000)

  這種類型的鬧鈴能在終止的時候喚醒系統,用法同 RTC

?

注意一個重要的參數 PendingIntent。這個 PendingIntent 可以說是 Intent 的進一步封裝, 因為它不僅對 Intent 進行了描述,也對使用該 Intent 所要完成的目標動作進行了描述。開發者可以通過以下六個方法來獲得 PendingIntent 實例。(參考官方文檔:PendingIntent | Android Developers)

?

? PendingIntent Public Methods (方法)

  static PendingIntent  

  getActivities(Context context, int requestCode, Intent[] intents, int flags)

  方法同 getActivity(Context, int, Intent, int),但允許提交一個由多個 Intent 組成的數組

static PendingIntent

  getActivities(Context context, int requestCode, Intent[] intents, int flags, Bundle options)

  方法同 getActivity(Context, int, Intent, int),但允許提交一個由多個 Intent 組成的數組

static PendingIntent

  getActivity(Context context, int requestCode, Intent intent, int flags)

  返回一個可以打開新 Activity 的 PendingIntent,相當于調用 ?Context.startActivity(Intent)。

static PendingIntent

  getActivity(Context context, int requestCode, Intent intent, int flags, Bundle options)

  返回一個可以打開新 Activity 的 PendingIntent,相當于調用 ?Context.startActivity(Intent)。

static PendingIntent

  getBroadcast(Context context, int requestCode, Intent intent, int flags)

  返回一個可以發送廣播的 PendingIntent,相當于調用 Context.sendBroadcast()。

static PendingIntent

  getService(Context context, int requestCode, Intent intent, int flags)

  返回一個可以啟動服務的 PendingIntent,相當于調用 ?Context.startService()。

?

?

轉載于:https://www.cnblogs.com/sunzn/p/3503769.html

總結

以上是生活随笔為你收集整理的Android 编程下 AlarmManager的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。