【问题标题】:When does ServiceConnection.onServiceDisconnected() get called?ServiceConnection.onServiceDisconnected() 什么时候被调用?
【发布时间】:2010-11-01 14:11:50
【问题描述】:

我在搞乱 Android 服务,我发现当我绑定到服务时,ServiceConnection.onServiceConnected() 会被相当可预测地调用。

但是,我的 onServiceDisconnected() 方法似乎永远不会被调用,即使在 VM 死机之后也是如此。

我已经在服务上记录了调试消息,并显示所有线程都已关闭,等等。我知道服务是作为进程实现的;是否有我不知道的线程阻止进程退出?

【问题讨论】:

    标签: android android-service


    【解决方案1】:

    它发生在远程服务崩溃时。因此,如果在与您的客户端不同的进程中运行的服务因某些异常而失败,您将失去连接并获得回调。

    【讨论】:

    • 只是崩溃了吗?当我调用unbindService() 并且服务退出时,我希望它会被调用,因为没有更多的客户端。
    • 根据文档,它只发生在 'unexpected service unbinding' 上,所以是的,它只在崩溃时发生,在 unbindService() 上没有
    • 那么,你怎么知道你是否真的可以重新绑定到服务呢?或者更好的是,你如何重新绑定?使用新的 ServiceConnection 吗?
    • @Reflog 确实如此,尽管当您使用 Context.BIND_NOT_FOREGROUND 绑定服务时,您可以在每次停止服务并取消绑定时看到 onDisconnectedService。签出此Answer
    • 您不必重新绑定;即使在服务断开后连接仍然存在。如果服务恢复,您的 onServiceConnected() 方法将被再次调用。
    猜你喜欢
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多