当Activity的onDestroy被调用时,Android会调用onCreate Service。

4
我有一个启动服务的活动。如果我退出到主屏幕,然后从最近的应用程序列表手动关闭该活动,则服务中的onCreate会再次调用。
因此,当活动被销毁时,onCreate会再次调用(即使在活动的onDestroy被调用时服务正在运行)。
我不想再次调用服务中的onCreate。我知道这可能是重复的问题:Android service onCreate is called multiple times without calling onDestroy 但是在另一个进程中放置服务的建议解决方法不起作用(至少在Android 4.4 kit kat上)。
有什么建议吗?

你是否查看了AOSP关于你所描述的类似问题的错误报告,例如https://code.google.com/p/android/issues/detail?id=63618?虽然你的服务会重新启动,但也许有一些克服这个问题的想法。 - harism
最近应用程序列表是通过长按主页键来实现的,而我的手机上的实现并没有关闭活动选项? - danny117
1个回答

3
这是因为在“最近使用的应用程序”列表中终止应用程序时,您正在强制终止服务。有两种避免重新启动的方法。不太好的方法是将服务放在与Android清单中的活动不同的进程中。
例如:
<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(),则会防止服务重新启动。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接