美文网首页
AlarmManager-闹钟服务

AlarmManager-闹钟服务

作者: 铸剑先生Joe | 来源:发表于2017-10-20 11:11 被阅读122次

AlarmManager-闹钟服务

AlarmManager简介

在特定的时刻为我们广播一个指定的Intent,简单来说就是我们自己定一个时间,然后到时间时,
AlarmManager会为我们广播一个我们设定好的Intent,比如指向某个Activity或者Service。

获得AlarmManager实例

AlarmManager alarmManager = (AlarmManager) context.getSystemService(ALARM_SERVICE);

AlarmManager常用方法解析

  • set(int type,long startTime,PendingIntent pi):一次性闹钟
  • setRepeating(int type,long startTime,long intervalTime,PendingIntent pi):
    重复性闹钟,和3有区别,3闹钟间隔时间不固定
  • setInexactRepeating(int type,long startTime,long intervalTime,PendingIntent pi):
    重复性闹钟,时间不固定
  • cancel(PendingIntent pi):取消AlarmManager的定时服务
  • getNextAlarmClock():得到下一个闹钟,返回值AlarmManager.AlarmClockInfo
  • setAndAllowWhileIdle(int type, long triggerAtMillis, PendingIntent operation)
    和set方法类似,这个闹钟运行在系统处于低电模式时有效
  • setExact(int type, long triggerAtMillis, PendingIntent operation):在规定的时间精确的执行闹钟,比set方法设置的精度更高
  • setTime(long millis):设置系统墙上的时间
  • setTimeZone(String timeZone):设置系统持续的默认时区
  • setWindow(int type, long windowStartMillis, long windowLengthMillis, PendingIntent operation):
    设置一个闹钟在给定的时间窗触发。类似于set,该方法允许应用程序精确地控制操作系统调
    整闹钟触发时间的程度。

关键参数解析

  • Type(闹钟类型):
    有五个可选值:
    AlarmManager.ELAPSED_REALTIME:
    闹钟在手机睡眠状态下不可用,该状态下闹钟使用相对时间(相对于系统启动开始),状态值为3;
    AlarmManager.ELAPSED_REALTIME_WAKEUP:
    闹钟在睡眠状态下会唤醒系统并执行提示功能,该状态下闹钟也使用相对时间,状态值为2;
    AlarmManager. RTC
    闹钟在睡眠状态下不可用,该状态下闹钟使用绝对时间,即当前系统时间,状态值为1;
    AlarmManager.RTC_WAKEUP
    表示闹钟在睡眠状态下会唤醒系统并执行提示功能,该状态下闹钟使用绝对时间,状态值为0;
    AlarmManager.POWER_OFF_WAKEUP
    表示闹钟在手机关机状态下也能正常进行提示功能,所以是5个状态中用的最多的状态之一,该状态下闹钟也是用绝对时间,状态值为4;不过本状态好像受SDK版本影响,某些版本并不支持;
  • startTime:闹钟的第一次执行时间,以毫秒为单位,可以自定义时间,不过一般使用当前时间。
    需要注意的是,本属性与第一个属性(type)密切相关,如果第一个参数对应的闹钟使用的是相对时间
    (ELAPSED_REALTIME和ELAPSED_REALTIME_WAKEUP),那么本属性就得使用相对时间
    (相对于系统启动时间来说),比如当前时间就表示为:SystemClock.elapsedRealtime();
    如果第一个参数对应的闹钟使用的是绝对时间(RTC、RTC_WAKEUP、POWER_OFF_WAKEUP),
    那么本属性就得使用绝对时间,比如当前时间就表示 为:System.currentTimeMillis()。
  • intervalTime:表示两次闹钟执行的间隔时间,也是以毫秒为单位.
  • PendingIntent:绑定了闹钟的执行动作,比如发送一个广播、给出提示等等。
    PendingIntent是Intent的封装类。需要注意的是,如果是通过启动服务来实现闹钟提 示的话,PendingIntent对象的获取就应该采用Pending.getService
    (Context c,int i,Intent intent,int j)方法;如果是通过广播来实现闹钟
    提示的话,PendingIntent对象的获取就应该采用 PendingIntent.getBroadcast
    (Context c,int i,Intent intent,int j)方法;如果是采用Activity的方式来实
    现闹钟提示的话,PendingIntent对象的获取就应该采用
    PendingIntent.getActivity(Context c,int i,Intent intent,int j)方法。
    如果这三种方法错用了的话,虽然不会报错,但是看不到闹钟提示效果。

相关文章

  • AlarmManager-闹钟服务

    AlarmManager-闹钟服务 AlarmManager简介 在特定的时刻为我们广播一个指定的Intent,简...

  • Android闹钟服务AlarmManager

    获取服务 设置闹钟 Android4.4以上 方法声明: 示例: 注意:如果设置的起始时间小于当前时间,闹钟将会马...

  • AlarmManager详解

    AlarmManager提供对系统闹钟服务的访问。应用将自己的意图传递给系统闹钟服务,当闹钟响起时,系统会向应用发...

  • 播放器枸思

    1-服务存活判断 闹钟支持 监听服务或进程的存活 2.进程保活

  • [电脑闹钟]心意闹钟,梦畅闹钟,美捷闹钟

    电脑闹钟闹钟软件定时关机 - 心意闹钟 永久免费http://www.naozhong.org/ //电脑闹钟-闹...

  • 生于闹钟,死于闹钟

    文‖邶风bf 每天必须经历一种或多种提醒,才能无遗憾的完成一天的工作或生活,这叫闹钟依赖症。 1 醒来有一会儿了,...

  • 闹钟

    清晨 每当你把你的命 从我的肉中抽出的时候 我就会惊醒。我觉得 你就像我的闹钟 二零一八年二月二十七日 曼谷

  • 闹钟

    凌晨五时 窗外的鸟儿,叫了 每天如此 它们,有闹钟吗 我想,是没有的 我想,定然会有 因为都说 早起的鸟儿有虫吃 ...

  • 闹钟

    闹钟一步紧跟一步给勇士斟满壮行的酒擂响出征的号角 闹钟一步紧跟一步逼得懦夫可处可躲送一块墓碑与他同住

  • 闹钟

    闹钟有时比我还懒,当我早早醒来时,它还睡得死沉死沉的。 看看时间,还尚早。不太忍心起床怕窸窸窣窣的声音会吵醒了它,...

网友评论

      本文标题:AlarmManager-闹钟服务

      本文链接:https://www.haomeiwen.com/subject/hknmuxtx.html