Android AlarmManager 设定过去的时间会触发事件

Android AlarmManager 设定过去的时间会触发事件

在使用 AlarmManager 做每日定时任务时,发现如果设定的时间小于当前的系统时间,那么设定后会立刻收到一次定时任务回调。

我们设想的是设定的时间应该是明日的这个时间,但是如果打印出设定的时间会发现,设定的时间是今天的。

public void addTask() {Calendar calendar = Calendar.getInstance();// 设置时区,否则会有 8 个小时的时间差calendar.setTimeZone(TimeZone.getDefault());calendar.set(Calendar.HOUR_OF_DAY, 15);calendar.set(Calendar.MINUTE, 30);calendar.set(Calendar.SECOND, 0);long setTime = calendar.getTimeInMillis();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());Log.e("WillWolf", "setTime-->" + sdf.format(new Date(setTime)));long currentTime = System.currentTimeMillis();Log.e("WillWolf", "currentTime-->" + sdf.format(new Date()));alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTime().getTime(), "TAG", listener, null);}

日志输出为:

setTime-->2024-06-21 15:30:00
currentTime-->2024-06-21 17:31:02

所以,为了避免时间已经过去还引发回调,可以添加一个时间判断。

public void addTask() {Calendar calendar = Calendar.getInstance();// 设置时区,否则会有 8 个小时的时间差calendar.setTimeZone(TimeZone.getDefault());calendar.set(Calendar.HOUR_OF_DAY, 15);calendar.set(Calendar.MINUTE, 30);calendar.set(Calendar.SECOND, 0);long setTime = calendar.getTimeInMillis();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());Log.e("WillWolf", "setTime-->" + sdf.format(new Date(setTime)));long currentTime = System.currentTimeMillis();Log.e("WillWolf", "currentTime-->" + sdf.format(new Date()));// 如果当前的时间大于设定的时间,表明设定的时间是未来一天的,做一个加一天的操作if (currentTime >= setTime) {calendar.add(Calendar.HOUR, 24);setTime = calendar.getTimeInMillis();Log.e("WillWolf", "setTime tomorrow-->" + sdf.format(new Date(setTime)));}alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTime().getTime(), "TAG", listener, null);}

日志输出为:

setTime-->2024-06-21 15:30:00
currentTime-->2024-06-21 17:31:02
setTime tomorrow-->2024-06-22 15:30:00

这样设定的触发时间就是明天的了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/857283.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【八股系列】说一下mobx和redux有什么区别?(React)

🎉 博客主页:【剑九 六千里-CSDN博客】 🎨 上一篇文章:【介绍React高阶组件,适用于什么场景?】 🎠 系列专栏:【面试题-八股系列】 💖 感谢大家点赞👍收藏⭐评…

现代数字信号处理及其应用-常见结论

现代数字信号处理及其应用-常见结论 本文的结论均摘抄自 何子述、夏威等编著,《现代数字信号处理及其应用》,清华出版社出版。 解析信号信号预包络;基带信号信号复包络。BT法(自相关谱估计法):间接法&…

双例集合(二)——双例集合的实现类之HashMap容器类

双例集合的常用实现类有HashMap和TreeMap两个,通过这两个类我们可以实现Map接口定义的容器,一般情况下使用HashMap容器类较多。 HashMap容器类是Map接口最常用的实现类,它的底层采用Hash算法来实现,这也就满足了键key不能重复的要…

Python:调用zabbix api,删除部分被监控主机

调用zabbix api,删除部分被监控主机。 简介代码部分配置文件config.jsonnamefile.txt 简介 当新主机上线时,我们可以通过自动注册功能,在zabbix中批量添加这些新主机。那当有主机需要下线时,我们又该如何在zabbix中批量删除这些主…

揭秘!速卖通、敦煌网、国际站出单背后的黑科技:自养号测评技术

在竞争激烈的跨境电商平台上,如亚马逊、速卖通、Lazada、Shopee、敦煌网、Temu、Shein、美客多和阿里国际等,稳定出单成为每位卖家共同追求的目标。为了实现这一目标,卖家需要从产品选择、运营策略和客户服务等多个维度进行全面考量&#xff…

华为重磅官宣:超9亿台、5000个头部应用已加入鸿蒙生态!人形机器人现身 专注AI芯片!英伟达挑战者Cerebras要上市了

内容提要 华为表示,盘古大模型5.0加持,小艺能力全新升级。小艺智能体与导航条融为一体,无处不在,随时召唤。只需将文字、图片、文档“投喂”小艺,即可便捷高效处理文字、识别图像、分析文档。 正文 据华为终端官方微…

采用string 及random库随机生成长度为32的字符串

要使用Python的string和random库来生成一个长度为32的随机字符串,其中包含大小写字母和数字,你可以按照以下方式编写代码: import string import random def generate_random_string(length32): """生成一个指定长度的随…

JavaWeb阶段学习知识点(一)

【参考视频】https://www.bilibili.com/video/BV1m84y1w7Tb?p=167&vd_source=38a16daddd38b4b4d4536e9c389e197f SpringBoot项目的创建和接口配置 做一个springboot项目,从创建项目到实现浏览器访问localhost:8080/hello返回字符串hello world的全流程 1. 创建项目 idea新…

从二元一次方程组到二阶行列式再到克拉默法则

目录 引言1 二元一次方程组什么是二元一次方程组?解法概述示例1. 操作步骤2. 消元法 2 二阶行列式引入行列式行列式定义示例计算 3 克拉默法则什么是克拉默法则?克拉默法则公式使用克拉默法则求解 4 总结 引言 在数学中,线性代数提供了一套强…

Laravel 高级:了解$loop

Blade 提供 foreach、while、for 和 forelse 等指令来与 PHP 循环配合使用。 您知道吗... 这些指令中有一个方便的 $loop 变量,它指示当前循环迭代?在本文中,我们将探索 $loop 和 loop 指令。😎 使用$loop比foreach更深入 该for…

上海科技博物馆超薄OLED柔性壁纸屏应用方案

产品:2组55寸OLED柔性屏2x1 特点:嵌入墙体,与空间装饰融入一体 用途:播放文物展示 一、项目背景 上海科技博物馆作为展示科技与文化的交汇点,一直致力于为观众提供沉浸式的参观体验。为了提升文物展示的现代化和科技感…

芯片验证分享系列总结及PPT分享

大家好,我是谷公子。花了将近两个月时间,《芯片验证分享》这一系列视频分享已经更新完了,内容涵盖了名词解释、芯片验证原则、激励开发、代码审查以及芯片调试。这一系列视频主要侧重于芯片验证理论的分享,希望可以帮助大家构建芯…

wvp-GB28181-pro 源码分析-点播流程(三)

文章目录 一 、28181-2016标准文档中的点播流程二 、点播流程源码分析2.1 页面发起点播请求2.2 与ZLM协商SSRC信息2.3 订阅zlmediakit的hook消息及发送invite信令2.4 处理invite信令响应并应答2.5 收到ZLM的推流通知2.6 播放成功2.7 停止点播流程2024年6月20日下载的wvp-GB2818…

程序员·职场效能必修宝典㊿:正视自己的职业倦怠

> 【易编橙终身成长社群,相遇已是上上签!】- 点击跳转~ < 作者:哈哥撩编程 (视频号同名) 图书作者:程序员职场效能宝典 博客专家:全国博客之星第四名 超级个体:COC上海社区主理人 特约讲师:谷歌亚马逊分享嘉宾

VBA语言専攻T3学员领取资料通知

各位学员∶本周MF系列VBA技术资料增加631-635讲&#xff0c;T3学员看到通知后请免费领取,领取时间6月21日晚上19:00-6月22日晚上20:00。本次增加内容&#xff1a; MF631:提取某列数据的唯一值 MF632:自动调整文本并旋转到90度 MF633:仅复制格式 MF634:Mod运算判断奇数偶数 …

又发现一款独立清理神器,界面清爽,功能强大,没有广告!

360清理Pro独立提取版是360公司推出的一款清理软件&#xff0c;主要用于清理系统垃圾和优化系统性能&#xff0c;涵盖了四大类型的清理场景&#xff0c;分别为&#xff1a;微信、QQ的垃圾扫描及清理&#xff0c;系统盘中的大文件、重复文件扫描及清理以及系统软件使用痕迹的清理…

ntpd和chronyd时间服务器配置样例及详解

本文为ntpd和chronyd时间服务器配置样例及详解&#xff0c;相关配置用于openEuler 22.03 (LTS-SP1)服务器用ntpd同步GPS时间服务器的案例 一、chronyd配置 [rootlocalhost ~]# egrep -v "^#|^$" /etc/chrony.conf server 192.168.188.74 iburst driftfile /var/lib/…

毕业答辩制作PPT【攻略】

毕业答辩制作PPT【攻略】 前言版权毕业答辩制作PPT【攻略】一、WPS AI 15天免费会员二、AI文档生成PPT三、修改完善PPT 最后 前言 2024-06-14 23:43:05 以下内容源自《【攻略】》 仅供学习交流使用 版权 禁止其他平台发布时删除以下此话 本文首次发布于CSDN平台 作者是CSDN…

fast lio 运行mid360采集的数据,并保存每一帧的点云PCD和位姿

首先我们看到在map_incremental中存在一个保存每一帧PCD文件的代码&#xff0c;因此想利用改代码。 如何修改呢&#xff1f; 一. 改每一帧无畸变点云的PCD的保存代码 /**************** save map ****************//* 1. make sure you have enough memories/* 2. noted that…

数字化物资管理系统的未来:RFID技术的创新应用

在信息化和智能化不断发展的背景下&#xff0c;物资管理系统的数字化转型已成为各行各业关注的焦点。RFID技术作为一种先进的物联网技术&#xff0c;通过全面数字化实现物资信息的实时追踪和高效管理&#xff0c;为企业的物资管理提供了强有力的支持。 首先&#xff0c;RFID技…