首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android推荐的可靠API用于周期性的后台工作?

Android推荐的可靠API用于周期性的后台工作?
EN

Stack Overflow用户
提问于 2022-05-16 06:25:05
回答 1查看 189关注 0票数 0

我一直在使用WorkManager为我的应用程序创建通知。就我的目的而言,我认为PeriodicWorkRequest是最合适的,但是经过一些测试和在线阅读,它看起来非常不可靠。使用最小间隔时间(15分钟),应用程序关闭,工人醒来5-6次,然后似乎被杀死。

那么,如何创造背景工作,在合理的时间间隔内醒来呢?创建基于事件的通知的最佳方法是什么?我的想法是在较短的时间间隔内检查事件(例如,检查数据库中的新内容)( 15分钟也不太理想),但考虑到它在PeriodicWorkRequest中不太有效,而且也是文档中推荐的方法,那么我的具体选择是什么?

EN

回答 1

Stack Overflow用户

发布于 2022-05-18 12:47:39

基本上,Android的想法是让你不能做你想做的事情,因为我们作为开发人员试图杀死电池。

你需要了解这些限制的演变过程:

版本6- Doze:

https://developer.android.com/training/monitoring-device-state/doze-standby https://developer.android.com/about/versions/marshmallow/android-6.0-changes#behavior-power

版本7.另一种有更多限制的Doze状态:https://developer.android.com/about/versions/nougat/android-7.0-changes#perf

广播限制:https://developer.android.com/guide/components/broadcasts https://developer.android.com/about/versions/nougat/android-7.0-changes#bg-opt

版本8.0后台执行限制:https://developer.android.com/about/versions/oreo/background#services

版本9 StandBy存储桶--取决于应用程序的使用方式,您可以使用不同的资源--比如唤醒应用程序的时间,使用网络的时间等等

https://developer.android.com/about/versions/pie/power#buckets https://developer.android.com/about/versions/12/behavior-changes-all#restrictive-app-standby-bucket https://developer.android.com/topic/performance/appstandby

节省电池的改进:

https://developer.android.com/about/versions/pie/power#battery-saver

电源管理限制-非常重要。https://developer.android.com/topic/performance/power/power-details

版本11和12应用程序休眠

https://developer.android.com/topic/performance/app-hibernation

长话短说-你需要阻止所有这些限制来损害你的工作。但是您需要遵守,因为这对用户更好。

但是没有一个API只会说:"f**k所有这些限制,做开发人员想做的任何事情。“

如果你需要精确的时间-你需要AlarmManager。

如果您不知道什么时候需要完成工作,并依赖于外部推送通知,则可以将工作转移到WorkManager。

如果您需要不需要时间限制的定期工作--您可能不会使用AlarmMangaer并确保工作已经完成,但是您不能确定什么时候完成,因为有许多限制和优先级将节省资源。

此外,您还可以要求用户免于电池优化:

https://developer.android.com/training/monitoring-device-state/doze-standby#support_for_other_use_cases

如果您想知道为什么没有执行工作,就需要检查JS转储,看看哪些限制没有得到满足:

https://developer.android.com/topic/libraries/architecture/workmanager/how-to/debugging#use-alb-shell0dumpsys-jobscheduler

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72254896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档