请教一个关于android 7.0适配问题AlarmManager的一个问题

5389人阅读
Android 学习(63)
设定alarm的话,大概需要用到如下几步:
1.创建一个Intent
2.创建一个PendingIntent
3.得到ALARM_SERVICE的AlarmManager
4.使用AlarmManager的set api,假如是取消,那就使用cancel
android自带的AP对于Alarm的管理是很巧妙的,例如Calendar,它基本上只会给系统设定一个alarm,等这个alarm结束之后,再设定下一个,这种模式很安全,也很有效,我认为这是一个值得学习的模式。
我之前一直有个疑问,设定的alarm,取消时,究竟要传怎样的PendingIntent系统才能知道我要取消的是哪一个
后来经过实验,我发现大概有这样几个参数会起决定作用,在我上面讲的四个步骤的第一步,Intent 的setData,setClass均能区别出,但是
putExtra却是没有用的。另外在PendingIntent.getBroadcast的第二个参数requestCode,查api,Google说这个参数没用的,但是其实它也是可以区别出不同的alarm。
1.Intent中的setData使用的值,必须和cancel中intent里面setData用的值一样,否则点击cancel是没法取消掉的,或者你不setData,那也是没法取消的
2.Intent中的setClass使用的值也必须和cancel众intent使用的一样,不然也cancel不掉,不setClass也cancel不了
3.Intent中的putExtra是无效的,根本不起区别的作用
4.getBroadcast的第二个参数,一般的ap都是写0,其实假如你前面的intent只有setAction过,那么单纯用reqeustCode也是可以区别不同的alarm的。
5.通常cancel之前可以先用PendingIntent.FLAG_NO_CREATE来判断之前是不是设定了这个alarm,假如没设定,那就不要去调用cancel
补充工程中的次要代码:
AndroidManifest.xml
LilyReceiver.java
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:77202次
积分:1463
积分:1463
排名:千里之外
原创:64篇
转载:31篇
评论:12条
(1)(2)(4)(8)(1)(5)(1)(5)(2)(2)(3)(1)(1)(2)(2)(4)(3)(5)(3)(1)(7)(14)(10)(6)(1)(1)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'||||||||||||||||||
查看: 465|回复: 1
在线时间135 小时经验值206 最后登录注册时间帖子阅读权限50UID4769300
大学专科, 积分 206, 距离下一级还需 194 积分
该用户从未签到
G币158 最后登录注册时间
RT,当AlarmManager调用set方法后,如果将系统时间改成过去,set方法不调用了。。。有什么办法能让他调用
在线时间598 小时经验值444 最后登录注册时间帖子阅读权限60UID2337140
大学本科, 积分 444, 距离下一级还需 256 积分
TA的每日心情无聊 21:26签到天数: 2 天[LV.1]初来乍到
G币5328 最后登录注册时间
同问,目前设计了一个带秒针的时钟widget,手动更改系统时间后,秒针不刷新了
浏览过的版块
Powered by

我要回帖

更多关于 android 7.0权限问题 的文章

 

随机推荐