调用Activity onDestroy时调用Android onCreate Service

时间:2014-05-17 16:52:34

标签: android service android-activity oncreate ondestroy

我有一项启动服务的活动。如果我退出到主屏幕,然后从最近的应用程序列表中手动关闭活动,则会在服务中再次调用onCreate。

因此,当活动被销毁时,再次调用onCreate(即使服务在活动中调用onDestroy时运行)

我不希望再次调用服务中的onCreate。我知道它可能有重复:Android service onCreate is called multiple times without calling onDestroy但是这里建议的将服务放在另一个进程中的解决方案并不起作用(至少在Android 4.4工具包kat上)

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

这是因为从最近使用的应用程序中删除了应用程序"列表,你强行杀死这项服务。有两种方法可以避免重启。不太好的方法是将服务放在与Android Manifest中的活动不同的过程中。

例如:

<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()