我有远程服务,我想使用该服务检查onPrepareOptionsMenu
中的某些条件。但有时当我从其他活动回来时,我得到“binder null”异常。我在onServiceDisconnected
中将binder设置为null。
我的问题:
onServiceDisconnected
吗?bindService
而不是onStart
中的onCreate
会更好吗?答案 0 :(得分:0)
1)只有在服务意外终止时才会调用onServiceDisconnected()
,就像托管服务的进程崩溃一样。当您自己从服务中取消绑定时,将不会调用它。来自documentation:
与服务的连接丢失时调用。这通常 当托管服务的进程崩溃或已经崩溃时发生 杀害。这不会删除ServiceConnection本身 - 这个 绑定到服务将保持活动状态,您将收到一个电话 当服务是下一个时,到onServiceConnected(ComponentName,IBinder) 运行
2)通常,如果您的活动停止时不需要连接到服务,那么是,onStart()
中的绑定和onStop()
中的绑定是正确的方法。这里的想法是,当您的活动在后台时,您不会浪费资源。但是,在onCreate()
中绑定并在onDestroy()
中取消绑定的documentation for bound services状态在某些情况下也可以。
3)本地服务意味着服务与消费者处于同一过程中。远程服务是处于不同进程中的服务。