假设创建了 Activity A,然后 A 启动了一个 Service S 并将其自身绑定到 S。S 通知 A 更新,这将导致 A 的状态发生变化。Android 暂停或停止 A 后,A 和 S 会发生什么?
例如:
- 暂停 A 是否会自动解除它与 S 的绑定(如果 A 是最后一个绑定到它的东西,则停止 S?)
- S 的更新是否会导致 A 恢复?
- S 的更新是否永远不会传递到 A 并且不会发生错误?
- S 能否意识到 A 已暂停或停止? (例如通过调用类似
A.isAsleep()
)
Also, 我该如何处理这种情况,以便“正确的事情”发生?我是否在 onPause() 中取消绑定服务并在 onResume() 中重新绑定?
(A) 将从 (S) onPause 解除绑定,但如果你没有调用解除绑定方法,我认为你会遇到内存泄漏。
除非您将 (A) 重新绑定到 (S) onResume(),否则 (A) 将注意到 (S),除非重新创建活动。
取决于您发送更新的方式。如果您完全引用 (A) 并且它恰好在暂停时被破坏,那么 NPE 肯定会发生。
只有当您有办法像您所做的那样与 (S) 沟通时,(S) 才会知道 (A) 已暂停。
是的,你做对了。您应该绑定和取消绑定 onResume 和 onPause。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)