Android - 在Activity onStop之后调用onServiceDisconnected吗?

时间:2012-10-02 08:32:31

标签: android android-service

我有远程服务,我想使用该服务检查onPrepareOptionsMenu中的某些条件。但有时当我从其他活动回来时,我得到“binder null”异常。我在onServiceDisconnected中将binder设置为null。

我的问题:

  1. 在活动onStop之后调用onServiceDisconnected吗?
  2. bindService而不是onStart中的onCreate会更好吗?
  3. 您能否简单解释一下本地服务和远程服务的区别?

1 个答案:

答案 0 :(得分:0)

1)只有在服务意外终止时才会调用onServiceDisconnected(),就像托管服务的进程崩溃一样。当您自己从服务中取消绑定时,将不会调用它。来自documentation

  

与服务的连接丢失时调用。这通常   当托管服务的进程崩溃或已经崩溃时发生   杀害。这不会删除ServiceConnection本身 - 这个   绑定到服务将保持活动状态,您将收到一个电话   当服务是下一个时,到onServiceConnected(ComponentName,IBinder)   运行

2)通常,如果您的活动停止时不需要连接到服务,那么是,onStart()中的绑定和onStop()中的绑定是正确的方法。这里的想法是,当您的活动在后台时,您不会浪费资源。但是,在onCreate()中绑定并在onDestroy()中取消绑定的documentation for bound services状态在某些情况下也可以。

3)本地服务意味着服务与消费者处于同一过程中。远程服务是处于不同进程中的服务。