Che*_*eng 19 android android-workmanager
目前,我们面临来自Android Vital报告的" 网络使用率过高(背景) ".过去30天是0.04%,但我们只有9%好
因为只有超过9%看起来像一个可怕的事情.我们决定认真研究这个问题.
该应用程序是一个笔记应用程序(https://play.google.com/store/apps/details?id=com.yocto.wenote),它提供一个可选的特征-同步应用程序结束后,以背景云英寸
这就是我们在后台执行同步到云的方式.
WorkManager.onPause,计划OneTimeWorkRequest,有约束NetworkType.CONNECTED.工人计划以8秒的延迟开始.BackoffPolicy.LINEAR,延迟时间为1.5小时.我们唯一的信息是https://developer.android.com/topic/performance/vitals/bg-network-usage.
当应用程序在后台连接到移动网络时,应用程序会唤醒CPU并打开收音机.反复这样做可能会耗尽设备的电池电量.如果应用程序处于PROCESS_STATE_BACKGROUND或PROCESS_STATE_CACHED状态,则认为该应用程序在后台运行.......当Android应用程序在0.10%的电池会话中在后台运行时,每小时发送和接收总计50 MB的总量时,Android vitals认为后台网络使用率过高.
Application的onPause.在此期间,应用程序内部或外部PROCESS_STATE_BACKGROUND/ PROCESS_STATE_CACHED?我们怎样才能避免运行中PROCESS_STATE_BACKGROUND/ PROCESS_STATE_CACHED?我的问题是
对于第一个问题,在以下情况下会触发“网络使用率过高(后台)”:
...某应用在后台运行时,每小时发送和接收总计50 MB的电量,占电池会话的0.10%。电池会话是指两次充满电之间的间隔。
要确定是什么原因造成的,请尝试使用Battery Historian来分析您的应用随时间的电池使用情况。对于我们来说,它有助于确定我们不打算引入的重复唤醒锁。
这是输出的示例,向我们展示了过多的BLE扫描会严重影响电池:

对于第二个问题,如您正确识别的那样,WorkManager可能是您追求的目标。这使您可以计划任务以及希望其出现的窗口。使用此功能,操作系统可以为您以及其他应用程序的作业优化任务计划。例如,可以将所有6个应用程序安排为同时发生,而不是将6个应用程序每10分钟唤醒设备一次的每小时任务,从而增加了在打increasing模式下花费的时间。
请注意,上面的屏幕截图包括“ JobScheduler作业”选项卡。运行分析后,您将能够看到您的工作实际如何执行:

我以前使用Firebase JobDispatcher取得了巨大的成功(我写的教程),它扩展了OS的JobScheduler API,并且最终很相似。
我看到您现在正在使用WorkManager(Jetpack的JobDispatcher版本),但是在8秒钟内,操作系统没有机会优化您的工作。是否有能力以最少几秒钟的时间调度它们,并尽可能将其最大化?
但是,您当前的任务计划设置可能不是根本原因。以下是一些其他想法,可能会为您提供所需的电池改进。在运行Battery Historian并确定了根本原因后,它们的用途将变得更加清晰:
考虑仅wifi上网是否是可行的数据同步默认选项。您会遇到更好的电池使用情况,更少的网络问题以及可能更好的客户满意度。
为什么记笔记应用程序需要同步几百 MB?您是否可以仅同步已更改的笔记,而不是每次都同步整个笔记列表?
| 归档时间: |
|
| 查看次数: |
506 次 |
| 最近记录: |