首页
学习
活动
专区
圈层
工具
发布

android AlarmManager讲解

Android系统闹钟定时功能框架,总体来说就是用数据库存储定时数据,有一个状态管理器来统一管理这些定时状态的触发和更新。...在Andriod系统中实现定时功能,最终还是要用到系统提供的AlarmManager,只是当一个定时完成后怎么继续处理,或者中间怎么更新定时的时间或者状态,像闹钟这种应用程序,每天重复定时,或者一周选择其中的几天...,闹钟响了延迟5分钟再次响铃,这时候就需要想一种好的办法来让管理这些数据和状态,下面就分析一下Android系统闹钟的实现。...整体的框架就是这样,在AlarmStateManager里使用AlarmManager形成了一个定时的状态机,不断转移到下一个状态处理。...源码在这里https://android.googlesource.com/platform/packages/apps/DeskClock/+/android-4.4.4_r2.0.1

2.1K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Android 电量优化】电量优化 ( 使用 AlarmManager 保持 CPU 唤醒 )

    可以一定程度上替代上述 WeakLock , 并且可以稳定每隔一段时间唤醒 CPU , 避免了 CPU 全程唤醒的情况 , 同时也降低了耗电量 ; 一、AlarmManager 简介 ---- AlarmManager...: 开发者可以设定触发任务执行的周期 , 该任务一般是通过发送延迟意图 PendingIntent 实现 ; ③ 广播接收者 : 一般使用 AlarmManager 定时发送 延迟意图 PendingIntent...intentFilter = new IntentFilter("ACTION"); registerReceiver( receiver, intentFilter); ③ 创建延迟意图 : 首先创建普通的...SystemClock.elapsedRealtime(), 50000, pendingIntent); } /** * 接收上面每隔 5 秒发送的广播...-- AlarmManager 保持 CPU 唤醒的 Service 服务 --> <service android:name=".AlarmManagerService

    1.7K00

    使用AlarmManager设置的定时服务在Android4.4上可能不准确了

    Android4.4在前天发布了,随着Android4.4的源代码的放出,相信会有更多的手机会慢慢的升级到Android4.4,作为苦逼的Android开发人员,我们需要保证我们的应用在Android4.4...现在这里就有一个比较大的更新会影响到我们的应用功能,他就是AlarmManager。...Android宣称为了电源的使用效率,在Android4.4上位所有应用的Alarm服务使用批量启动的方式来处理相似的时间以激活设备。...很多人想,这太不合理了啊,那我们根本就没有使用到Android4.4的新东西,只是用户的手机是Android4.4的系统,不能这么武断的就这么处理吧。...如果你想使用Android4.4及其以后版本的新功能,必须把targetSdkVersion设置成>=19,而又想要求Alarm的设置精准,那么怎么办呢,Android在4.4给我们提供了新的方法setExact

    1.2K30

    4-SII--☆Android缓存文件(带有效时长)封装

    零、前言 [1]把我的缓存文件工具改写成了策略模式,感觉还不错。 [2]以前静态方法调用,很方便,但看着就是不爽,代码真的太冗余了。...转载请注明 更多安卓技术欢迎访问:https://www.jianshu.com/c/004f3fe34c94 张风捷特烈个人网站,编程笔记请访问:http://www.toly1994.com 你的喜欢与支持将是我最大的动力...说明:文件缓存基类 */ public abstract class BaseFileStrategy implements CacheStrategy { /** * 缓存文件的文件夹名称...*/ private String mDirName; /** * 构造函数 * @param dirName 缓存文件的文件夹名称 */...BufferedReader(new FileReader(cacheFile)); String deadline = reader.readLine();// 读取第一行的有效期

    53520

    Android14 适配之——现有 App 安装到 Android14 手机上需要注意些什么?

    如果 App 的 targetSdkVersion 设置的是 33(Android13)或更高,在 Android14 的设备上运行时,这个权限就是默认关闭的。...setExactAndAllowWhileIdle() 方法; 4)用户指定的在大概特定时间点发生的,或者在一个时间窗口内发生的事务; 适配流程: 1)调用 alarmManager.canScheduleExactAlarms...实例 val alarmManager = requireActivity().getSystemService(Context.ALARM_SERVICE) as AlarmManager...()) { alarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerTime, pendingIntent...目前媒体库支持按照 OWNER_PACKAGE_NAME 列查询某包名下的所有媒体文件,一个应用存储的媒体文件是带有它自己的包名信息的。

    6K10

    Android获取QQ和微信的聊天记录,并保存到数据库

    ,对这个需求有了大致的想法,开始着手准备: 一个有root权限的手机,我用的是红米5(强调必须要有ROOT) android的开发环境 android相关的开发经验(我是个PHP,第一次写ANDROID...= "0") { String sql = "select * from message"; Log.e("sql", sql); Cursor c =...= "select troopuin,troopname from TroopInfoV2 where _id"; Log.e("sql",sql); Cursor c = db.rawQuery...后续 这里还有几个需要注意的地方: 最新安卓系统很难写个死循环直接跑了,所以我们需要使用Intent,来开始Service,再通过Service调用AlarmManager。...AlarmManager manager = (AlarmManager) getSystemService(ALARM_SERVICE); int Minutes = 60*1000; //此处规定执行的间隔时间

    12.2K228

    android 实现本地定时推送(兼容)

    通知必须加channel_id,否则通知无法显示 - 查阅大量资料,发现代码都参差不齐,不过还是有很多值得参考的地方,目前这份代码有很多都是抄字那些博主的文章,然后稍加改动,加以整合而成 - 代码分为三个类...,service类、闹钟工具类和通知工具类 首先,闹钟工具类: package com.util; import android.app.AlarmManager; import android.app.PendingIntent...; } } 闹钟类,目前只用过AlarmManager.RTC_WAKEUP类型,这个是精确定时,很多博客都提到过,不了解的可以自己查查。...,但并不需要外部调用 服务或者广播类及其配置 服务和广播配置一个就可以了,目前我才有的是服务的配置方法 服务的写法 import android.app.Service; import android.content.Intent...> 广播的写法 import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent

    4.2K20

    android 实现本地定时推送(兼容)

    通知必须加channel_id,否则通知无法显示 - 查阅大量资料,发现代码都参差不齐,不过还是有很多值得参考的地方,目前这份代码有很多都是抄字那些博主的文章,然后稍加改动,加以整合而成 - 代码分为三个类...,service类、闹钟工具类和通知工具类 首先,闹钟工具类: package com.util; import android.app.AlarmManager; import android.app.PendingIntent...; } } 闹钟类,目前只用过AlarmManager.RTC_WAKEUP类型,这个是精确定时,很多博客都提到过,不了解的可以自己查查。...,但并不需要外部调用 服务或者广播类及其配置 服务和广播配置一个就可以了,目前我才有的是服务的配置方法 服务的写法 import android.app.Service; import android.content.Intent...> 广播的写法 import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent

    3.5K30

    Android开发笔记(一百六十)休眠模式下的定时器控制

    定时器AlarmManager常常用于需要周期性处理的场合,比如闹钟提醒、任务轮询等等。...针对定时器AlarmManager的滥用问题,Android从4.4开始,修改了setRepeating方法的运行规则。...这光景,简直是活脱脱的一出Android版本的自相矛盾,话说Android设计师当街叫卖Android的安全盾,号称这面盾很牢固、没有矛可以刺穿;前来踢馆的开发者拿着一把Android的setRepeating...设计师眼看不妙,赶忙拿起另一面名叫Android4.4的安全盾,又称你的setRepeating矛不行了;开发者精明得很,随身抄着一把Android的set矛,又道这把矛可以破了那面Android4.4...我们作为开发者,要让定时器适配Android6.0的休眠模式倒也不难,只需把下面这行的set方法代码: mAlarmManager.set(AlarmManager.RTC_WAKEUP

    3.5K20
    领券