【发布时间】:2020-06-10 13:50:54
【问题描述】:
在 Android 10 中,一些制造商在电池优化设置中提供了新功能(见图)。屏幕关闭一段时间后,我的前台服务被操作系统杀死。
我使用了带有通知的前台服务。当所有设备的屏幕都打开时,此代码运行良好。我在 OnePlus 和 realMe 设备中遇到了这个问题,它们都具有 android 10 操作系统。
我想知道, 有没有办法解决这个问题? 有什么方法可以知道我的设备有这样的设置吗?
感谢您的帮助!
【问题讨论】:
-
前台服务从未保证它会永远运行。它不太可能在任何时间点被终止,但它仍然可以被终止。
-
感谢@CommonsWare,有没有办法让设备中存在“智能控制”设置?有什么解决方案可以始终在设备中运行我的服务?
-
"有没有办法让设备中存在“智能控制”设置?" ——据我所知没有。制造商不需要为这类事情提供 API。 “任何解决方案始终在设备中运行我的服务?” - 这是不可能的。同样,甚至可以终止前台服务。使用前台服务并使用
START_STICKY,因此操作系统知道如果您被终止,您希望重新启动。之后,这取决于设备制造商,当您的服务无法运行时,您的应用需要应对可能的“停机时间”。 -
是的,我在 onStartCommand 方法中使用了 START_STICKY,但是当操作系统杀死应用程序时它不会重新启动。谢谢@CommonsWare
-
您可以在某些系统事件(例如 SCREEN-ON)上使用 JobScheduler 和 BroadcastReceiver 重新启动 ForegroundService,这需要更多权限。
标签: android android-10.0 batterymanager battery-saver