【发布时间】:2021-10-19 23:33:27
【问题描述】:
这是关于服务和活动的 Android 生命周期的一般问题。我不是在尝试解决特定问题,只是为了更好地了解有助于设计的机制。
我相信 Android 可以随时终止活动,例如内存不足且不是前台活动时。也不一定调用 onDestroy() (出于某种原因)。它可以对服务做同样的事情,但不太可能 - 试图让服务继续运行。
假设我有一个启动前台服务的活动。服务需要通知 Activity 一些异步事件,并为此 Activity 实现特定接口,将自身的引用传递给服务,服务可以在该引用上调用某些接口方法 - 即侦听器。
活动进入后台,Android 决定终止它。但是该服务对其有参考。那么活动会发生什么?大概它不能被垃圾收集,因为服务中有对它的实时引用?这是否意味着服务使活动保持活力?可以清理 onDestroy() 中的侦听器,但如果不调用它就不行。
【问题讨论】:
标签: android android-activity android-service android-lifecycle