android 定时器 坑,Android 记录一个使用AlarmManager的坑。
正常使用的代码是这样的:
private void createAlarm(String message, int hour, int minutes){
AlarmManager alarmManager = (AlarmManager)
getSystemService(Service.ALARM_SERVICE);
//设置定时发送广播的PendingIntent
Intent intent = new Intent(this, ClockReceiver.class);
Bundle bundle = new Bundle();
bundle.putString("text",message);
intent.putExtras(bundle);
PendingIntent pi = PendingIntent.getBroadcast(this, 0, intent, 0);
//设置当前时间
Calendar c = Calendar.getInstance();
c.setTimeInMillis(System.currentTimeMillis());
// 根据用户选择的时间来设置Calendar对象
c.set(Calendar.HOUR_OF_DAY, hour);
c.set(Calendar.MINUTE, minutes);
c.set(Calendar.SECOND,0);
c.set(Calendar.MILLISECOND, 0);
// 设置AlarmManager在Calendar对应的时间发送广播
alarmManager.cancel(pi);
alarmManager.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pi);
}
这样使用是没毛病的。
但是问题在于,你 接连 定时两个广播发送的话。就是两个广播的发送时间间距较短。问题就出现。
尽管你给定时器设置了新的 PendingIntent ,然而它只会以你 第一次 设置的 PendingIntent 来发送广播。
拿我上面的代码做例子。
我两次传入不同的 message 来调用 createAlarm()。如果设置的两次定时的时间间隔较短。那么我的广播会两次收到第一个 message。
解决方法
在于这一行代码
PendingIntent pi = PendingIntent.getBroadcast(this, 0, intent, 0);
这里的 PendingIntent.getBroadcast() 第二个参数,必须不同。定时器才会设置两个不同 PendingIntent
标签:set,记录,AlarmManager,intent,设置,Android,Calendar,PendingIntent
来源: https://blog.csdn.net/weixin_42619856/article/details/104671892
android 定时器 坑,Android 记录一个使用AlarmManager的坑。相关推荐
- 记录一个C++多线程的坑
记录一个C++多线程的坑 VS2019报错 解决方案: 错误代码 修改方案: 写在最后,发牢骚 VS2019报错 1>C:\Program Files (x86)\Microsoft Visua ...
- android 定时器倒计时,Android CountDownTimer实现定时器和倒计时效果
本文实例为大家分享了Android实现定时器和倒计时的具体代码,供大家参考,具体内容如下 直接上代码,相信都看得懂. Android已经帮封装好了一个类,只不过很多人不知道而已. 代码: public ...
- android定时器取消,Android定时器崩溃取消
我有一个定时器运行,然后熄灭,并做了一些事情,定时器启动罚款.Android定时器崩溃取消 然后我想要做的是点击一个按钮,然后创建一个电子邮件.除了在计时器运行时单击该按钮之外,一切正常,应用程序崩溃 ...
- android 定时器重置,Android定时器延迟和重置
我确定在这里的某处有类似的问题,但我似乎无法找到它.Android定时器延迟和重置 这是我正在尝试做的. 假设我已连接到服务器,并且如果在过去5分钟内没有用户拨打任何电话,我想断开连接.但是,如果连一 ...
- android+定时器+动画,Android 实现定时器的四种方式总结及实现实例_Android_脚本之家...
Android中实现定时器的四种方式 第一种方式利用Timer和TimerTask 1.继承关系 java.util.Timer 基本方法 schedule 例如: timer.schedule(ta ...
- android 定时器 耗电,Android定时器
CountDownTimer new CountDownTimer(3000, 1000) { public void onTick(long millisUntilFinished) { if (m ...
- Parcelable的用法及记录一个Parcelable遇到的坑
大家都知道2个Act之前传递对象数据,一般就是用Serializable或者Parcelable了,好处我就不说了,肯定是Parcelable好用就对了 先看下数据对象 public class Pe ...
- 记录一个自己挖的坑~
这个是在AC_DOCUMENT里做了调整. 后来一个程序批到的时候发现,抬头文本丢了. 然后我就开始debug看了看,发现是这个增强里影响了. 然后就 顺手加了两句话 过了几天,发现了个尴尬的问题.如 ...
- java 记录一个类加载顺序的坑
看看这个,先想想结果打印的顺序和a.b的值 public class ClassLoderTest {public static void main(String[] args) {staticFun ...
最新文章
- Scala可变数组和不可变数组之间相互转换
- 【java--反射】注解(反射解析注解+注解应用)
- python算法与数据结构-快速排序算法
- 【转】指针和引用的区别
- HTML页面显示缩略所有空格为一格的方法
- Windows Phone开发(11):常用控件(下)
- attention机制中的注意力图怎么画_注意力机制 | 图卷积多跳注意力机制 | Direct multihop Attention based GNN...
- mongodb的安装与简单操作
- 阿里云成为MariaDB基金会白金会员 全球唯一入选云计算公司
- Netgear业务交换机被曝15个漏洞,有些不修复
- .Net MVC框架 + WCF 搭建 集群开发
- 阶段3 1.Mybatis_11.Mybatis的缓存_1 今日课程安排
- 开发者拒绝写技术博客的常见理由
- 一文搞懂天使轮、A轮、B轮、C轮、D轮融资
- vue项目中,使用mint-ui的picker实现省市区三级联动,并且编辑时选中默认值(封装成独立的组件)
- 用Java写一个简易五子棋游戏
- 差分GPS接收机定位原理
- HihoCoder上网络流算法题目建模总结
- 基于QT的简陋视频播放器
- ZooKeeper基础知识笔记(含3节点伪分布式安装配置流程)
热门文章
- c++ primer note
- Linux C++ STL用法介绍(1)
- HQL (五) 外置命名查询(sql语句单独保存起来)
- CALayer 简单的使用
- SilverLight学习笔记--关于Silverlight资源文件(如:图片)的放置位置及其引用
- webClient请求JAVA超时解决方案
- CryptographicException异常处理方法
- Python常见问题解决记录1-Non-ASCII character ‘\xe7‘错误
- 【实践】微博多尺度序列推荐算法实践.pdf(附下载链接)
- 解读千人千面,洞悉数据智能的价值(附ppt下载链接)