何时在Android上注销并清除References,Listeners&co?



我有一个普遍的问题,现在已经在我脑海中浮现很长时间了。
在相关的生命周期回调中应该删除哪些类型的引用、变量和侦听器(例如 onCreate <-> onDestroy(?

举几个例子:

  • 我有一个变量private lateinit var data: LiveData<List<String>>,它在onCreate方法中初始化,然后提供给回收商。我应该以某种方式删除它吗onDestroy

  • 我在onCreate向回收商添加了OnScrollListener,我应该在onDestroy中取消注册吗?


我问是因为我似乎真的找不到任何关于此的简明信息。

如果您正在使用活动 你应该删除ondestrory((中的所有引用,监听器和回调 如果您使用的是片段,请在 ondestroyView(( 中清除所有引用、侦听器和回调。

当您的片段处于前台/活动或内存不足时会发生什么,GC运行并且由于任何引用,侦听器和回调,如果Gc无法清理内存,您将获得内存泄漏。
因此,您必须确保在 onDestory(( 中删除所有引用、侦听器和回调(如果是活动(,在 OndestroyView 中删除片段

最新更新