1

我有一个远程服务,我想使用该服务检查onPrepareOptionsMenu. 但有时当我从其他活动回来时,我会遇到“binder null”异常。我将 binder 设置为 null in onServiceDisconnected

我的问题:

  1. 是否onServiceDisconnected在活动 onStop 后调用?
  2. bindService用inonStart代替更好onCreate吗?
  3. 您能否简单解释一下本地服务和远程服务的区别?
4

1 回答 1

0

1)onServiceDisconnected()仅当服务意外终止时才会调用,例如托管服务的进程崩溃时。当您自己解除与服务的绑定时,它不会被调用。从文档中:

当与服务的连接丢失时调用。这通常发生在托管服务的进程崩溃或被终止时。这不会删除 ServiceConnection 本身——这个与服务的绑定将保持活动状态,并且当服务下次运行时,您将收到对 onServiceConnected(ComponentName, IBinder) 的调用。

2)一般情况下,如果您在 Activity 停止时不需要连接到服务,那么是的,绑定onStart()和取消绑定onStop()是正确的方法。这里的想法是当你的活动在后台时你不会浪费资源。但是,绑定服务的文档指出,在某些情况下onCreate()绑定和取消绑定onDestroy()也是可以的。

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

于 2012-11-20T15:55:10.770 回答