使用AlarmManager实现APP保活(1)

news/2025/3/29 22:38:27/文章来源:https://www.cnblogs.com/mstk/p/18794739

首先,定义两个类:Alarm_Scheduler和Alarm_Receiver,Alarm_Scheduler的代码如下:

public class Alarm_Scheduler {public static void schedule_alarm(Context context) {AlarmManager alarm_manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);Intent intent = new Intent(context, Alarm_Receiver.class);PendingIntent pending_intent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);// 高版本无法setExactAndAllowWhileIdleif (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {if (!alarm_manager.canScheduleExactAlarms()) {try {intent = new Intent(Settings.ACTION_REQUEST_SCHEDULE_EXACT_ALARM);intent.setData(Uri.parse("package:" + context.getPackageName()));context.startActivity(intent);} catch (ActivityNotFoundException e1) {try {// 跳转到应用详情页备选Intent settingsIntent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);settingsIntent.setData(Uri.parse("package:" + context.getPackageName()));context.startActivity(settingsIntent);}catch (ActivityNotFoundException e2) {// 显示手动引导弹窗}}}}// 设置精确唤醒(根据系统版本适配)if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {alarm_manager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP,System.currentTimeMillis() + TraceApplication.alarm_interval,pending_intent);}else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {alarm_manager.setExact(AlarmManager.RTC_WAKEUP,System.currentTimeMillis() + TraceApplication.alarm_interval,pending_intent);}else {alarm_manager.set(AlarmManager.RTC_WAKEUP,System.currentTimeMillis() + TraceApplication.alarm_interval,pending_intent);}
}

首先获得一个AlarmManager的实例,再定义一个PendingIntent启动Alarm_Receiver.

‌setExactAndAllowWhileIdle是Android中用于设置精确闹钟的方法,它允许在设备处于低功耗模式(如Doze模式)时仍然能够触发闹钟‌.这种方法特别适用于需要确保在特定时间触发闹钟的应用场景.然而,高版本的Android系统(API版本31及以上)禁止使用这个方法,因此要判断Android系统的版本,对于高版本的系统引导用户进行设置,允许使用‌setExactAndAllowWhileIdle方法.

然后根据不同的系统版本设置闹钟,API版本23及以上的使用setExactAndAllowWhileIdle(),19~22使用setExact(),18及以下使用set().

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

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

相关文章

Django 之 ContentType(django_content_type)

REF https://blog.csdn.net/weixin_30498807/article/details/96845973 https://blog.csdn.net/aaronthon/article/details/81714496用来管理和维护我们应用程序的models转自:https://www.cnblogs.com/oysq/p/15643370.htmlDjango除了我们常见的admin、auth、session等contrib…

20243402谢子凌 实验二《Python程序设计》实验报告

学号 2024-2025-2 《Python程序设计》实验二报告 课程:《Python程序设计》 班级: 2434 姓名: 谢子凌 学号:20243402 实验教师:王志强老师 实验日期:2025年3月26日 必修/选修: 公选课 1.实验内容 设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。 考…

【视频】文本挖掘专题:Python、R用LSTM情感语义分析实例合集|上市银行年报、微博评论、红楼梦数据、汽车口碑数据采集词云可视化

原文链接:https://tecdat.cn/?p=41149原文出处:拓端数据部落公众号 分析师:Zhenzhen Liu,Shuai FungPython企业年报文本分析情感挖掘语调分析:以上市银行为例作为数据科学家,我们始终关注如何从非结构化数据中提取高价值信息。本专题合集聚焦企业年报的文本分析技术,通…

20242125 单嘉怡 实验二《Python程序设计》实验报告

20242125单嘉怡 2024-2025-2 《Python程序设计》实验二报告 课程:《Python程序设计》 班级:2421 姓名:单嘉怡 学号:20232401 实验教师:王志强 实验日期:2025年3月26日 必修/选修: 公选课 一.实验内容设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。…

026 登录页-手机登录搭建-volar警告消除

这里什么也不写,把res删除 2、这样写 3、看看效果

20243116 实验二《Python程序设计》实验报告

20243116 2024-2025-2 《Python程序设计》实验二报告 课程:《Python程序设计》 班级: 2431 姓名: 陆翔轩 学号:20243116 实验教师:王志强 实验日期:2025年3月26日 必修/选修: 公选课 一、实验内容 1.设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。…

基于Grafana使用官方模版查询Prometheus数据

grafana配置Prometheus作为数据源选择一个模版,导入到dashboards 模板地址 https://grafana.com/grafana/dashboards/ 选择Prometheus,选择一个适应版本的模版,记录ID 例如:1860 11074 8919查看dashboards