我有一个用于研究目的的应用程序,用于从后台传感器收集数据。我使用注册某些广播接收器的服务,startForeground()
附加到通知,我也使用START_STICKY在onStartCommand()
中启动服务。
Marshmallow上的一切都运行良好但是当我在一段时间内使用7.1.1在OnePlus 3上试用它时,应用程序就会从正在运行的应用程序中消失......一切都被系统杀死了。有时我收到系统通知说:“注意,在后台运行的应用程序使用了很多......”。如果我单击此通知,则会打开“管理高功耗应用程序”的“设置”窗口,我的应用程序已存在,但禁用了“自动关闭高功耗应用程序”选项。
此外,我已将应用程序设置为电池下的系统设置中的“不优化”。实际上,如果我禁用那些消耗更多电池的传感器(如位置)的日志记录,一切正常,我可以无限期地运行应用程序。有关如何解决的任何建议吗?
请记住,这是一个用于研究目的的应用程序,它没有发布,因此不建议不要这样做,因为它可能会影响用户体验,事实并非如此。谢谢!
答案 0 :(得分:2)
显然它是报告here的OxygenOS“功能”。我的堆栈跟踪已附加,我必须更换智能手机..
...
05-19 21:03:12.434 it.unitn.disi.witmee.sensorlog I/System.out: SERVICE: true
05-19 21:03:27.689 it.unitn.disi.witmee.sensorlog I/art: Background partial concurrent mark sweep GC freed 265550(7MB) AllocSpace objects, 0(0B) LOS objects, 39% free, 14MB/23MB, paused 1.357ms total 106.126ms
05-19 21:03:43.649 it.unitn.disi.witmee.sensorlog I/art: Background sticky concurrent mark sweep GC freed 243975(7MB) AllocSpace objects, 0(0B) LOS objects, 30% free, 16MB/23MB, paused 1.610ms total 108.734ms
05-19 21:03:55.995 it.unitn.disi.witmee.sensorlog I/art: Background partial concurrent mark sweep GC freed 298424(8MB) AllocSpace objects, 0(0B) LOS objects, 39% free, 14MB/24MB, paused 1.716ms total 126.141ms
05-19 21:04:02.051 ? I/ActivityManager: [BgDetect]detect excessive cpu on process it.unitn.disi.witmee.sensorlog(pid : 27858) level 0 usage 29
05-19 21:04:02.088 ? I/ActivityManager: [BgDetect]force stop it.unitn.disi.witmee.sensorlog (uid 10245) level 0
05-19 21:04:02.089 ? I/ActivityManager: Force stopping it.unitn.disi.witmee.sensorlog appid=10245 user=0: from pid 1336
05-19 21:04:02.089 ? I/ActivityManager: Killing 27858:it.unitn.disi.witmee.sensorlog/u0a245 (adj 200): stop it.unitn.disi.witmee.sensorlog
05-19 21:04:02.089 ? W/ActivityManager: Scheduling restart of crashed service it.unitn.disi.witmee.sensorlog/.services.LoggingMonitoringService in 1000ms
05-19 21:04:02.091 ? I/ActivityManager: Force stopping service ServiceRecord{9156a9a u0 it.unitn.disi.witmee.sensorlog/.services.LoggingMonitoringService}