Android 在系统终止后,由BOOT_COMPLETE启动的服务会发生什么情况?

Android 在系统终止后,由BOOT_COMPLETE启动的服务会发生什么情况?,android,android-service,android-framework,Android,Android Service,Android Framework,在系统为内存而终止启动时启动的服务会发生什么情况 它会在不重新启动手机的情况下重新启动吗?有可能以某种方式重新启动它吗 尽可能避免重要服务被终止的最佳做法是什么?如果需要重新启动该服务,则应使用AlarmManager在单独的广播接收器中检查该服务,但是名义上,当系统为了内存而终止服务时,它不会自动重新启动。使用AlarmManager定期发送意图——接收意图并确保服务正在运行。您可能需要查看 它会在不重新启动手机的情况下重新启动吗 可能吧。如果确实是因为“系统为了内存而杀死它”,并且您从onS

在系统为内存而终止启动时启动的服务会发生什么情况

它会在不重新启动手机的情况下重新启动吗?有可能以某种方式重新启动它吗


尽可能避免重要服务被终止的最佳做法是什么?

如果需要重新启动该服务,则应使用AlarmManager在单独的广播接收器中检查该服务,但是名义上,当系统为了内存而终止服务时,它不会自动重新启动。

使用AlarmManager定期发送意图——接收意图并确保服务正在运行。

您可能需要查看

它会在不重新启动手机的情况下重新启动吗

可能吧。如果确实是因为“系统为了内存而杀死它”,并且您从
onStartCommand()
(例如,
START\u STICKY
)返回了一个适当的值,那么它应该在将来的某个时候重新启动。如果由于用户操作(例如,设置中管理服务屏幕中的强制停止)而终止服务,则不会重新启动该服务

尽可能避免重要服务被杀死的最佳做法是什么

首先,将应用程序设计为不依赖这样的永久服务。99.44%的Android应用程序不需要连续运行的服务,更不用说在启动时开始运行的服务了。安卓设备用户讨厌开发者,他们认为他们的应用程序非常重要,因为他们的服务一直在运行——这就是为什么我们有任务杀手、强制停止和安卓因年老而停止服务的原因。例如,如果您每15分钟检查一次新电子邮件,请使用
AlarmManager
IntentService
,而不是永远运行的服务

如果您能向我和您的用户证明,您的应用程序是真正需要在启动时启动并永远运行的服务的0.56%应用程序之一,那么您可以使用
startForeground()
。这将向操作系统表明,您的服务是前台用户体验的一部分。您必须显示一个
通知
,理想情况下,当用户不再认为有正当理由时,允许用户干净地关闭您的服务