首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

    文章目录 一、AlarmManager 简介 二、使用 AlarmManager 保持 CPU 唤醒流程 ( 省电操作 ) 三、使用 WeakLock 保持 CPU 唤醒 代码示例 1、Service...可以一定程度上替代上述 WeakLock , 并且可以稳定每隔一段时间唤醒 CPU , 避免了 CPU 全程唤醒的情况 , 同时也降低了耗电量 ; 一、AlarmManager 简介 ---- AlarmManager...简介 : ① 激活时间 : AlarmManager 可以脱离于应用生命周期限制 , 每隔一段时间 , 定期执行任务 ; 即使应用没有执行 , 或者手机处于休眠状态 , 也可以触发执行操作 ; ② 间隔设定...: 开发者可以设定触发任务执行的周期 , 该任务一般是通过发送延迟意图 PendingIntent 实现 ; ③ 广播接收者 : 一般使用 AlarmManager 定时发送 延迟意图 PendingIntent..., 然后继续休眠 , 可以极大降低资源消耗 ; 二、使用 AlarmManager 保持 CPU 唤醒流程 ( 省电操作 ) ---- 使用 AlarmManager 保持 CPU 处于唤醒状态 ,

    1.8K00

    笔记58 | Android闹钟

    当我们从服务端同步数据时,往往会在应用不被使用的时候时被唤醒触发执行某些操作。此时你可能希望使用重复闹钟。...因此在我们使用闹钟时,请牢记下面的最佳实践建议: 对任何由重复闹钟触发的网络请求添加一定的随机性(抖动): 在闹钟触发时做一些本地任务。...因此如之前所述,对于网络请求,我们需要为闹钟的触发时机增加随机性。 尽量避免让闹钟基于时钟时间。 想要在某一个精确时刻触发重复闹钟是比较困难的。我们应该尽可能使用ELAPSED_REALTIME。...设置重复闹钟 如上所述,对于定期执行的任务或者数据查询而言,使用重复闹钟是一个不错的选择。它具有下列属性: 闹钟类型(后续章节中会展开讨论); 触发时间。...如果触发时间是过去的某个时间点,闹钟会立即被触发; 闹钟间隔时间。例如,一天一次,每小时一次,每五秒一次,等等; 在闹钟被触发时才被发出的Pending Intent。

    2.3K30

    Android vitals 帮您解决应用质量问题

    此类行为可能会让用户迅速卸载您的应用; 2.应用程序无法响应 (ANR)事件:当应用的用户界面卡住时候,此类事件会被触发。...不过,在发生某些事件的情况下,还是很有必要唤醒 CPU 并向用户发出警告 —— 比如说,闹钟触发或者收到新消息。...利用该机制而不是定期轮询新数据,您的应用会仅在需要时才被唤醒。...如果您无法使用消息推送并依赖定期轮询,考虑使用 JobScheduler 或者 Firebase JobDispatcher (或者使用 SyncManager 来处理账户数据)。...当且仅当消息推送以及任务调度对您的任务不适用时,您才可以利用 AlarmManager 设定唤醒闹钟。换个角度来说就是,仅当您想要在特定时间触发闹钟,不考虑网络以及其它情况,唤醒闹钟才是必要的。

    2.1K10

    Android中的Doze模式

    当设备未连接至电源,且长时间处于闲置状态时,系统会将应用进入Doze,置于App Standby模式。而最终的效果,能提升30%的电量续航能力。...Doze模式的状态 该状态与API版本无关,未适配API23以上的应用只要运行在6.0以上的系统上就会受到Doze模式的影响。...Doze模式 当系统处于Doze模式下,系统和白名单之外的应用将受到以下限制: 无法访问网络 Wake Locks被忽略 AlarmManager闹铃会被推迟到下一个maintenance window...闹铃也不会被触发 应用申请加入白名单 App可以通过PowerManager.isIgnoringBatteryOptimizations检查本App是否在系统的白名单列表中。...在监听系统硬件或者屏幕亮暗的中断信号所发出来的广播,然后对于JobScheduler以及AlarmManager中任务进行统一调度。

    3.8K10

    如何用 Android vitals 解决应用程序的质量问题

    使用这种机制而不是定期拉取新数据,你的应用只有在需要时才会被唤醒。...这些是比 AlarmManager 更高级别的 API,而且为更智能的定期任务提供以下好处: A) 批处理 —— 许多任务将被批量处理以使设备睡眠时间更长,而不是多次唤醒系统来执行这些任务。...只有当消息推送和定期任务不适合你的工作时,你才应该使用 AlarmManager 安排唤醒警报。或者从另一个角度来看,只有当你需要在特定时间启动闹钟时才需要使用唤醒警报,无论网络或其他条件如何。...要解决过度唤醒的问题,请先确定你的应用在哪些地方设置了唤醒警报,然后降低触发这些警报的频率。...在应用程序启动时使用 StrictMode#setThreadPolicy 可以自定义你想要检测的内容,包括磁盘和网络读写,甚至可以通过 StrictMode#noteSlowCall 在应用程序中触发自定义的慢速调用

    3.6K10

    边开发边测试--故事从闹钟讲起

    适用于以固定间隔重复的alarm,比如每半小时触发一次。 (3)AlarmManager.RTC表示闹钟在睡眠状态下,这种类型的闹铃不会唤醒系统。...适用于在一天某个特定的时间点触发的alarm. (5)AlarmManager.POWER_OFF_WAKEUP表示闹钟在手机关机状态下也能正常进行提示功能(关机闹钟)。...如果没有wakelock,很可能出现onReceive事件处理完后,耗时任务未处理完,但此时任务未持有wakelock因此系统可能进入休眠,从而导致任务中止的现象。)...用户内存小被系统强行停止被加速类APP强行停止 无日志输出 企业红包可弹出时间段,用户一直处在非桌面应用 产品策略 输出主动判定为闹钟失效的日志 对应企业红包APK未安装或版本不对 产品策略 输出主动判定为闹钟失效的日志...这种方式一方面更符合用户的使用场景(比我们不断去调节时间看产品表现更接近用户场景),一方面可以更直观集中地发现的问题(如多触发/不触发/触发不准时/触发后数据不正常等)。

    2.3K90

    Android M 特性 Doze and App Standby模式详解

    Understanding Doze 1.设备进入Doze睡眠模式时机: 用户不操作设备一段时间 屏幕关闭 设备未连接电源充电 2.Doze模式下应用程序有什么变化: 系统试图通过限制应用程序访问网络和...CPU密集型服务节省电池; 防止应用程序访问网络,推延应用程序的工作,同步,和标准的警报; 系统定期提供一个短暂的时间让应用程序完成延迟的工作活动,在这个时间片里,系统将提供维持性窗口应用程序访问网络,...网络连接会被禁止 Wake Lock会被屏蔽 AlarmManager定时任务延迟到下一个maintenance window进行处理,除非使用AlarmManager提供的方法:setAndAllowWhileIdle...除非触发以下任意条件,应用程序将退出App Standby状态: 1. 用户主动启动该App; 2....应用程序还可以使用AREQUEST_IGNORE_BATTERY_OPTIMIZATIONS 权限来触发一个系统对话来让用户添加到白名单里,而无需进入设置界面去设置。

    8.5K11

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

    定时器AlarmManager常常用于需要周期性处理的场合,比如闹钟提醒、任务轮询等等。...针对定时器AlarmManager的滥用问题,Android从4.4开始,修改了setRepeating方法的运行规则。...// mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP,         //          System.currentTimeMillis()...当然为了保证App不被完全挂死,系统也会定期退出休眠模式,好比青蛙从冬眠之中苏醒过来,在苏醒期间,系统允许挂起的App重新恢复运行,继续先前设定好的任务。...我们作为开发者,要让定时器适配Android6.0的休眠模式倒也不难,只需把下面这行的set方法代码: mAlarmManager.set(AlarmManager.RTC_WAKEUP

    3.5K20
    领券