android AlarmManager使用详解

android AlarmManager使用详解,第1张

AlarmManager是android中系统自带的一个提醒服务,比如设置闹钟,做一个定时任务,还可以设置重复 *** 作

AlarmManager中常用的有三个方法:

1、set(int type,long startTime,PendingIntent pi),用于设置一次闹钟。

2、setRepeating(int type,long startTime,long intervalTime,PendingIntent pi),用于设置重复闹钟。

3、setInexactRepeating(int type,long startTime,long intervalTime,PendingIntent pi),同样是用于设置重复闹钟,但是它是不准确的,相对于第二个方法,也更加节能。

下面就看看这些方法中的参数:

type为闹钟的类型,可分为四个常量:

ELAPSED_REALTIME:闹钟在睡眠状态下不可用,使用的是相对系统启动时间。

ELAPSED_REALTIME_WAKEUP:闹钟在睡眠状态下可用,使用的是相对系统启动时间。

RTC:闹钟在睡眠状态下不可用,使用的是真实时间。

RTC_WAKEUP:闹钟在睡眠状态下可用,使用的是真实时间。

startTime:为开始时间

intervalTime:为重复闹钟的间隔时间,内置了几种:

INTERVAL_FIFTEEN_MINUTES15分钟

INTERVAL_HALF_HOUR半个小时

INTERVAL_HOUR一个小时

INTERVAL_HALF_DAY 半天

INTERVAL_DAY 一天

PendingIntent :广播的一个intent,我们用广播接受闹钟的定时任务,注册一个广播去接受,任务指令。

使用PendingIntent的getBroadcast (Context context, int requestCode, Intent intent, int flags)方法可以得到一个发送广播动作的PendingIntent对象

为以下4个常量或其他支持使用Intent.fillIn()来控制它的变量:

FLAG_CANCEL_CURRENT:如果描述的PendingIntent对象已经存在时,会先取消当前的PendingIntent对象再生成新的。

FLAG_NO_CREATE:如果描述的PendingIntent对象不存在,它会返回null而不是去创建它。

FLAG_ONE_SHOT:创建的PendingIntent对象只使用一次。

FLAG_UPDATE_CURRENT:如果描述的PendingIntent对象存在,则保留它,并将新的PendingIntent对象的数据替换进去。

另一个就是在manifest.xml中注册自己的广播

这样就可以实现定时任务了,如果要定时任务service启动还可以加上service

一般Android手机具有四种铃声可以设置,分别为:来电、短信、闹钟、系统等种类铃声,具体的设置编制为:

1:先打开Android手机的内存卡盘,在里面成立个“media”文件夹,然后打开后成立个“audio”文件夹。

2:打开“audio”文件夹后,在里面非别成立“ringtones”(来电)、“notifications”(短信)、“alarms”(闹钟)、 “ui”(系统提示)。

3:然后遵循本身的需要将铃声存放到这几个文件夹中。

4:打开Android手机,在“菜单”-“设置”-“声音”这里便可以自行进行选择了。

【首要提示:把文件夹设置好,在把要设置的铃声放进指定文件夹后重启手机后,在进进设置里往设置,便可以选择刚才放进的铃声了〔短信铃声设置编制—进进短信内—按菜单键—进进设置里便可以设置短信铃声了〕

现在有一个定时提醒的功能, 用 AlarmManager 自己来做,有多少坑做过的都知道。(应用被kill, 应用保活,息屏,关机重启,多版本兼容问题。。。)。要自己做一个完善的不是 1-2天就能搞定的。当然如果是应用内简单的定时执行,定时提醒 AlarmManager 还是很好用的。

https://www.jianshu.com/p/1f919c6eeff6

对于这种需求可以调用系统闹钟或用系统日历的提醒事件来做。

日历提醒功能可以直接用 Intent 起日历提醒界面,这样最简单,不需要权限。

调用API 直接设置需要动态申请权限

https://www.cnblogs.com/loaderman/p/10489592.html

https://developer.android.com/guide/topics/providers/calendar-provider

设置系统闹钟需要 SET_ALARM 权限

取消闹钟用 AlarmClock.ACTION_DISMISS_ALARM


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6359261.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-21
下一篇 2023-03-21

发表评论

登录后才能评论

评论列表(0条)

保存