18

我有一个活动通过调用startService方法启动服务的场景: theActivity和 theService都在同一个包中。然后服务可以根据其配置参数启动一个ExternalActivity包含在不同包中的活动(我们称之为它):这个活动通过bindService;绑定服务。一旦这个活动完成了它的任务,它就会调用unbindService如下的方法......

// method of ExternalActivity
@Override
public void onDestroy() {
    super.onDestroy();
    unbindService(...);
}

结果,服务也被破坏了。有没有可能避免服务被破坏?

4

1 回答 1

13

结果,服务也被破坏了。

正如 yorkw 解释的那样,只有当以下两个都为真时,服务才会被销毁:

  1. 所有对 的调用bindService()都与对 的相应调用相匹配unbindService()

  2. 如果有人呼叫startService(),则有人也呼叫stopService()或服务呼叫stopSelf()

有没有可能避免服务被破坏?

找个更好的时间打电话stopService()stopSelf(),无论您使用的是哪一个。

于 2012-04-29T10:28:56.420 回答