Android活动和服务关系 - 暂停后,停止后

时间:2011-07-11 21:57:32

标签: android android-service

假设创建了活动A,然后A启动服务S并将其自身绑定到S. S通知A将导致A状态发生变化的更新。 Android暂停或停止A后,A和S会发生什么?

例如:

  • 暂停A会自动将其从S解除绑定(因此如果A是最后一个绑定它的话,则停止S?)
  • 来自S的更新会导致A恢复吗?
  • 来自S的更新是否永远不会传递给A并且不会发生错误?
  • S可以意识到A已暂停或停止吗? (例如通过调用A.isAsleep()
  • 之类的东西

另外,我如何处理这种情况以便“正确的事情”发生?我是否在onPause()中取消绑定服务并重新绑定onResume()?

1 个答案:

答案 0 :(得分:2)

(A)将从(S)onPause解除束缚,但如果你没有调用unbind方法,我认为你会得到内存泄漏。

除非您将(A)重新绑定到(S)onResume(),否则(A)将注意到(S)除非重新创建活动。

取决于您如何发送更新。如果您完全参考(A)并且它在暂停时恰好被销毁,那么NPE肯定会发生。

(S)只会意识到如果你有一种方法可以像你一样将这个传达给(S),那么(A)就会被暂停。

是的,你说得对。你应该绑定和取消绑定onResume和onPause。