我用WorkManager和这个指南的用法实现了一些后台任务。有一次我需要使用CoroutineWorker。我发现这些指南相当不错,但是每次我需要新的背景处理要求时,我就开始对我所需要的进行新的研究。因此,我的问题是,用现代Android解决以下用例的正确方法是什么。此外,请考虑不同的手机品牌扼杀背景任务的挑衅(一些品牌更苛刻的背景处理)。我什么时候需要使用持久通知,什么时候不需要,什么时候使用AlarmManger。请为每一种最好的实现方式以及如果持久通知需要的话写。
用例:
1.下载大文件(500)
一天一次,准确的时间
B每天一次操作系统可以,在任何时候
2.下载小文件(5k)
一天一次,准确的时间
B每天一次操作系统可以,在任何时候
3.在准确时间设置警报
4.与服务器同步DB (大数据约5分钟运行时)
每15分钟一次(最小时间?)
b.一天一次
5.与服务器同步DB (小于1秒运行时的小数据)
a.每5分钟一次
b.每15分钟一次
c.每天一次
发布于 2022-05-31 10:01:45
根据本参考 of WorkManager,有三种类型的持久化工作可以通过它来安排,
这意味着大多数用例都可以通过使用WorkManager来实现,除非有两种情况需要它“每5分钟运行一次”&“在确切的时间设置警报”。
这里建议,如果您想在确切的时间设置警报,那么不应该使用WorkManager,而应该使用AlarmManager,它会在指定的时间从打瞌睡模式中唤醒设备。
检查工作经理提供的所有可能的执行:

(https://developer.android.com/topic/libraries/architecture/workmanager#types提供)
因此,以下是您可以根据用例使用的所有可能方法:
创建长期运行的工作人员的参考:https://developer.android.com/topic/libraries/architecture/workmanager/advanced/long-running#long-running
希望这能有所帮助!
发布于 2022-05-28 14:35:51
请查看我在这里给出的答案,以获得更多信息:
1.下载一个大文件(500)
a.每天在准确的时间设置一次--您可以在这里设置一个确切的警报,但是在后台启动服务时,您会遇到Android12的限制(其他评论将对此进行详细介绍)。因此,这取决于用例。我只是不想去那里。
b每天一次,而操作系统可以在任何时候-与WorkManager一起使用,但理论上它取决于电源桶,所以如果您进入较低的,您可能会超过一天。而且,开始和结束是不同的。你可能会开始达到每天10分钟的极限。(其他评论中将对此进行详细介绍)
2.下载小文件(5k) a.一天一次的准确时间-作为一个大文件。
b每天一次操作系统可以,在任何时间-作为一个大文件.
3.在准确的时间设置警报- - --这取决于你做什么.我不明白
4.将DB与服务器(大约5分钟运行时的大数据)同步--这样的事情需要WorkManager。
所有以上-15分钟来自Doze模式。但就连它也有“两种口味”。这15分钟只是理论上的。在现实中,它可能更多。WorkManager有“周期性工作”的概念。在现实中,没有这样的东西。WorkManager使用约束的概念。因此,你有一个约束,你需要一个网络,你被限制,你需要一个设备充电,你有一个“时间限制”。所以你看--一个24小时的“周期性工作”只是一个额外的约束:“不要在24小时内开始”。但这并不意味着“每24小时一次”。在理论上,24可能已经通过,时间约束是满足的,然后由于其他原因,您在1周内成功执行,并且工作将被重新安排为另一个24小时的时间限制。
对于“每5分钟、15分钟、15分钟”之类的内容,只需在服务通知中使用以下文本创建一个服务:“我们的应用程序讨厌您的电池”,永远不要停止它,做您需要的任何事情:)但是完全违背了新的Android概念。
即使您使用推送通知(如果它们不是高优先级),您也会有效地返回到WorkManager做稍后的工作。
就像我说的:“一天一次”的意思是“一天一次”。
a.每15分钟一次(最短时间?)
b.一天一次
5.与服务器同步DB (小于1秒运行时的小数据)
a.每5分钟一次
b.每15分钟一次
c.一天一次
https://stackoverflow.com/questions/72415454
复制相似问题