我有一个启动服务的 Activity 。如果我退出到主屏幕,然后从最近的应用程序列表中手动关闭 Activity ,则会在服务中再次调用 onCreate。
所以当activity被销毁时,onCreate会再次被调用(即使在activity中调用onDestroy时服务正在运行)
我不想再次调用服务中的onCreate。我知道这可能是重复的:Android service onCreate is called multiple times without calling onDestroy但是这里建议的将服务放在另一个进程中的解决方案不起作用(至少在 Android 4.4 kit kat 上)
有什么建议吗?
最佳答案
这是因为从“最近使用的应用程序”列表中终止应用程序后,您将强制终止该服务。有两种方法可以避免重新启动。不太好的方法是将服务放在与 Android Manifest 中的 Activity 不同的进程中。
例如:
<activity ...
process:"com.example.activity.process" />
<service ...
process:"com.example.service.process" />
因此,在终止应用程序后,服务也不会被终止并重新启动。如果您使用此方法,Android 将在其认为合适的情况下终止该服务。
更正确的方法是使用 onStartCommand()
方法。
只需将以下代码添加到您的服务中:
@Override
public int onStartCommand(Intent intent, int flags, int startID) {
return START_NOT_STICKY;
}
这将防止服务在不正确终止时重新启动,即未调用 onDestroy()
。
关于Android onCreate Service 在 Activity onDestroy 调用时调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23713882/