防止后台服务因“检测分叉进程中过多的cpu”而被杀死

时间:2016-07-06 19:27:31

标签: android native syncthing

我正在调试issue包装器的Syncthing Android。 Android应用程序包装Syncthing项目的原生二进制文件,并提供一些附加功能,如基于连接WiFi,电源等启动/停止。

不幸的是,有关此服务不再自动启动WiFi问题的问题,特别是对于已经升级到Android 6的手机。由于我的个人手机最近升级到6.0.1,我终于能够调试问题,今天我注意到以下几点:

07-06 20:52:26.562  1181  1363 I ActivityManager: [BgDetect]chkExcessCpu doKills: true uptime: 300309
07-06 20:52:26.960  1181  1363 I ActivityManager: [BgDetect]detect excessive cpu on forked process libsyncthing.so(pid : 2758) plan to stop it 371060 during 300309
07-06 20:52:26.960  1181  1363 I ActivityManager: [BgDetect]force stop com.nutomic.syncthingandroid.debug (uid 10132)
07-06 20:52:26.965  1181  1363 I ActivityManager: Force stopping com.nutomic.syncthingandroid.debug appid=10132 user=0: from pid 1181
07-06 20:52:26.966  1181  1363 I ActivityManager: Killing 1360:com.nutomic.syncthingandroid.debug/u0a132 (adj 15): stop com.nutomic.syncthingandroid.debug
07-06 20:52:26.968  1181  1363 W ActivityManager: Scheduling restart of crashed service com.nutomic.syncthingandroid.debug/com.nutomic.syncthingandroid.syncthing.SyncthingService in 1000ms
07-06 20:52:26.968  1181  1354 V ActivityManager: killProcessGroupAsync took 1 ms for PID 1360 on thread 14
07-06 20:52:26.971  1181  6410 I libprocessgroup: Killing pid 2758 in uid 10132 as part of process group 1360
07-06 20:52:26.973  1181  6410 I libprocessgroup: Killing pid 2758 in uid 10132 as part of process group 1360
07-06 20:52:26.974  1181  1363 I ActivityManager:   Force stopping service ServiceRecord{47304c8 u0 com.nutomic.syncthingandroid.debug/com.nutomic.syncthingandroid.syncthing.SyncthingService}

Syncthing协议在CPU方面非常繁重,涉及加密,散列等。因此,由于分叉本机二进制文件的高CPU需求,服务似乎已强制停止。

该应用程序已标记为“无电池优化”,但仍然被杀死。有没有办法阻止ActivityManager因分叉进程的CPU需求而终止应用程序?

2 个答案:

答案 0 :(得分:2)

不幸的是,这是一个OnePlus / OxygenOS功能,它将基于谁知道什么规则来终止任何后台进程,从而使电池寿命更长。

就目前而言,我在GitHub issue中发现了一种非代码的解决方法,该方法似乎有帮助,但远非理想之选:pin/lock the application on the recents screen

答案 1 :(得分:0)

在测试我的前台服务时,意识到这是一个性能问题,主要是CPU。因此,我使用探查器强制执行性能并将其添加到白名单中。

减少了cpu,ram和电池的消耗及其消耗。

Foreground notification service not working in one plus devices