android 定时推送提醒,使用workManager实现每日定时推送通知

本文介绍如何在Android应用中实现每日定时推送通知,即使后台被清理也能在打开App时立即推送。通过WorkManager,可以在原生ROM和国产ROM上确保通知的发送,虽然精度受限于15分钟的最小间隔,但可以实现每15分钟检查一次并在指定时间段推送。文章提供了一个Worker子类的示例代码,展示了如何创建和调度PeriodicWorkRequest。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写这篇博客的缘由来自一个需求:

每日定时推送通知,提醒用户完成签到。如果后台被清理,则在打开App后立即推送。

众所周知,如今的Android国产ROM想要实现定时操作需要做极强的保活。然而一旦做了保活,那么程序就可能会消耗没有必要的资源,变得很流氓,这并不是我们想要看到的。

于是jobSchedule应运而生,这个库应该是最完美的解决方案,但有api限制,并不能满足我的需要。

后来尝试了AlarmManager,这个工具也能较精确地定时工作,但是一旦程序被杀后台,就再也不起作用。而且由于采用继承Receiver的方式,在8点打开app无法收到本应是7点的通知,因此也无法满足需要。

于是选择了各种情况是否定时推送后台未被清理后台被清理原生ROM推送推送

国产ROM推送打开App后继续推送

在程序没有被杀的情况下,能够完成定时工作。

在程序被杀后,若是原生ROM,不会有影响;若是国产ROM,不会自动推送通知,但会在打开App的第一时间自动调用代码,完成推送。愚以为,微博,知乎App也是用类似这样的操作实现的推送,因为你杀掉后台后并不能接收到推送(一加5t 氢os 8.1),但是一旦重新打开App,会收到之前的提醒。

当然,这样做的缺点就是无法做到精确定时,因为workManager的重复工作间隔必须大于15分钟。因此即使使用最短的时间间隔,也最多只能保证精度为15*2=30分钟。

做到定时的原理就是,每15分钟调用一次,查看时间是否是在指定的时间段。

如果在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值