我有一项启动服务的活动。如果我退出到主屏幕,然后从最近的应用程序列表中手动关闭活动,则会在服务中再次调用onCreate。
因此,当活动被销毁时,再次调用onCreate(即使服务在活动中调用onDestroy时运行)
我不希望再次调用服务中的onCreate。我知道它可能有重复:Android service onCreate is called multiple times without calling onDestroy但是这里建议的将服务放在另一个进程中的解决方案并不起作用(至少在Android 4.4工具包kat上)
有什么建议吗?
答案 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()
。