Android Nougat 在 Oneplus 上杀死了我的应用

Android Nougat kills my app on Oneplus

我有一个用于研究目的的应用程序,它在后台从传感器收集数据。我使用注册一些广播接收器的服务,startForeground() 附加到通知,并且我在 onStartCommand() 中使用 START_STICKY 启动服务。 在 Marshmallow 上一切正常,但是当我在带有 7.1.1 的 OnePlus 3 上尝试一段时间后,该应用程序就从 运行ning 应用程序中消失了.. 一切都被系统杀死了。有时我会收到一条系统通知:"Attention, An application running in background is using a lot..."。如果我单击此通知,它会打开显示 "Manage high power usage apps" 的设置 window,我的应用程序在那里,但选项 "Auto close high power usage apps" 被禁用。 此外,我已经在电池下的系统设置中将应用程序设置为"do not optimize"。实际上,如果我禁用那些消耗更多电池的传感器(例如位置)的日志记录,一切正常,我可以 运行 该应用程序无限期使用。关于如何解决有什么建议吗?

请记住,这是一个用于研究目的的应用程序,它没有发布,所以不建议不要这样做,因为它会影响用户体验,事实并非如此。谢谢!

据报道 here 显然它是 OxygenOS "feature"。我的堆栈跟踪已附加,我必须更换智能手机..

... 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}