当前位置: 首页 > news >正文

专门做网站的软件高级搜索入口

专门做网站的软件,高级搜索入口,科技设计网站建设,网站制作排序官网镇楼:设置重复闹铃时间 闹钟具有以下特征: 它们可让您按设定的时间和/或间隔触发 intent。您可以将它们与广播接收器结合使用,以启动服务以及执行其他操作。它们在应用外部运行,因此即使应用未运行,或设备本身处…

官网镇楼:设置重复闹铃时间

闹钟具有以下特征:

  • 它们可让您按设定的时间和/或间隔触发 intent。
  • 您可以将它们与广播接收器结合使用,以启动服务以及执行其他操作。
  • 它们在应用外部运行,因此即使应用未运行,或设备本身处于休眠状态,您也可以使用它们来触发事件或操作。
  • 它们可以帮助您最大限度地降低应用的资源要求。您可以安排定期执行操作,而无需依赖定时器或持续运行后台服务

简单来说,要在设定的时间执行具体的任务,可以用 AlarmManager 来实现。

注:这里说的应用通过 AlarmManager 设置的闹钟 和 系统闹钟应用里设置的闹钟 不一样,不要混淆了。

举个例子,
应用通过 AlarmManager 设置闹钟,到某个时间点获取版本更新信息,简称 A 。
系统闹钟应用里设置的每天早上8点的起床闹钟,简称 B 。

添加 A 时,不会添加到系统闹钟应用里,触发 A 时 ,只会触发应用里的事件(如 Receiver),不会有系统闹钟的声音、震动、UI 弹窗等东西。

触发 B 时,有系统闹钟的声音、震动、UI 弹窗等东西。

初始化

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);

设置单次闹钟

set

30s 后唤醒设备并触发闹钟
模拟器测试:

  • 设置闹钟后不退出应用,锁屏,到时间可以触发,不会唤醒屏幕;
  • 设置闹钟后退出应用,并清理进程,到时间可以触发;
  • 设置闹钟后退出应用,并清理进程,锁屏,到时间可以触发,不会唤醒屏幕;

使用 PendingIntent 来实现,到时间后会触发 AlarmReceiver.onReceive() ,

Intent intent = new Intent(mContext, AlarmReceiver.class);
pendingIntent1 = PendingIntent.getBroadcast(mContext, 0, intent, 0);alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,SystemClock.elapsedRealtime() + 30 * 1000,pendingIntent1);

setExact

setExact 和 set 用法是一样的,差别是 setExact 比 set 时间更精确。大白话,setExact 是 30 秒后触发,set 可能 30秒后触发,也可能 35 秒后触发。

30s 后唤醒设备并触发闹钟

Intent intent = new Intent(mContext, ExactAlarmReceiver.class);
pendingIntent6 = PendingIntent.getBroadcast(mContext, 6, intent, 0);alarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP,SystemClock.elapsedRealtime() + 30 * 1000,pendingIntent6);

设置重复闹钟

设置重复闹钟用 setInexactRepeating 和 setRepeating 。

  • setInexactRepeating :必须使用指定的时间间隔常量,此方法会同步多个不精确的重复闹钟,并同时触发它们。这样可以减少耗电量。
  • setRepeating :精确闹钟,可以自定义时间间隔。

setInexactRepeating

使用 PendingIntent 和 Calendar 来实现,到时间后会触发 AlarmReceiver.onReceive() ,

在上午 10:10 左右唤醒设备并触发闹钟,

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 10);
calendar.set(Calendar.MINUTE, 10);Intent intent = new Intent(mContext, AlarmReceiver.class);
pendingIntent3 = PendingIntent.getBroadcast(mContext, 0, intent, 0);// With setInexactRepeating(), you have to use one of the AlarmManager interval
// constants--in this case, AlarmManager.INTERVAL_DAY.
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),AlarmManager.INTERVAL_FIFTEEN_MINUTES, pendingIntent3);

指定的时间间隔有 15 分钟、半小时、一小时、半天、一天,分别对应 :

  • INTERVAL_FIFTEEN_MINUTES
  • INTERVAL_HALF_HOUR
  • INTERVAL_HOUR
  • INTERVAL_HALF_DAY
  • INTERVAL_DAY

setRepeating

使用 PendingIntent 和 Calendar 来实现,到时间后会触发 AlarmReceiver.onReceive() ,

在上午 9:25 准时唤醒设备并触发闹钟,此后每 1 分钟触发一次:

Intent intent = new Intent(mContext, AlarmReceiver.class);
pendingIntent4 = PendingIntent.getBroadcast(mContext, 0, intent, 0);// Set the alarm to start at 9:25 a.m.
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 9);
calendar.set(Calendar.MINUTE, 25);// setRepeating() lets you specify a precise custom interval--in this case,
// 1 minutes.
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),1000 * 60 * 1, pendingIntent4);

取消闹钟

使用 cancel() 方法,传入不想触发的 PendingIntent 即可。

if (alarmManager != null) {if (null != pendingIntent1) {alarmManager.cancel(pendingIntent1);}if (null != pendingIntent2) {alarmManager.cancel(pendingIntent2);}if (null != pendingIntent3) {alarmManager.cancel(pendingIntent3);}}

获取系统闹钟应用里设置的闹钟

获取系统闹钟应用里设置的闹钟,获取最临近的一个,返回一个 AlarmClockInfo ,

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
AlarmManager.AlarmClockInfo info = alarmManager.getNextAlarmClock();

AlarmClockInfo.getTriggerTime() 方法返回的是 UTC 时间,转为日期形式更直观,

/**
* 1692453600000 ==> Sat, 2023 08 19 22:00:00 GMT
* */
private String utc2Date(long utcTime){Calendar calendar= Calendar.getInstance();calendar.setTimeInMillis(utcTime);SimpleDateFormat sdfGmt = new SimpleDateFormat("EEE, yyyy MM d HH:mm:ss 'GMT'", Locale.getDefault());//星期三, 2023 08 16 22:00:00 GMTsdfGmt.setTimeZone(TimeZone.getDefault());return sdfGmt.format(calendar.getTime());}
http://www.yidumall.com/news/1840.html

相关文章:

  • asp做的是系统还是网站游戏推广怎么做
  • 大型门户网站建设多少钱头条新闻最新消息
  • 百度推广和哪些网站有合作舆情网站直接打开
  • 免费建立企业网站2023疫情最新情况
  • 做棋牌网站合法吗搜索引擎优化怎么做
  • 网站图片滚动效果怎么做互联网销售
  • 室内设计联盟官网论坛优化生育政策
  • 响应式网站空间服务器要求友链网站
  • 线上销售有哪些渠道网站优化排名服务
  • 网站设计模块如何找外链资源
  • 个人网站可以做资讯小说类app下载推广平台
  • 本地wordpress怎么弄网站长春疫情最新消息
  • 个人资料库网站怎么做外包公司
  • 建设一个菠菜网站成本seo快速排名软件推荐
  • 移动互联网开发明日学院在线教育网页源码冯耀宗seo课程
  • j为什么不用java做网站星链友店
  • 保定手机网站制作2022推广app赚佣金平台
  • 计算机专业网站毕业设计每日一则小新闻
  • 销售管理crm宁波网站快速优化
  • b2c电子商务网站的功能拼多多关键词排名在哪里看
  • 虚拟主机部署网站seo查询 工具
  • 网站备案需要到公安局吗免费的网站推广在线推广
  • 公司注册地址必须是商业用房吗淘宝关键词优化软件
  • 宿迁网站建设方案推广之家官网
  • 大型搜索网站开发google关键词优化
  • 外汇110网站上做的这些曝光广告销售如何寻找客户
  • 品牌宣传型网站构成全网营销老婆第一人
  • wordpress搜索结果带图代码seo网站优化方案
  • 沂水做网站宝鸡seo外包公司
  • wordpress 插件管理百度seo软件曝光行者seo