我有一个普遍的问题,现在已经在我脑海中浮现很长时间了。
在相关的生命周期回调中应该删除哪些类型的引用、变量和侦听器(例如 onCreate <-> onDestroy(?
举几个例子:
-
我有一个变量
private lateinit var data: LiveData<List<String>>
,它在onCreate
方法中初始化,然后提供给回收商。我应该以某种方式删除它吗onDestroy
? -
我在
onCreate
向回收商添加了OnScrollListener
,我应该在onDestroy
中取消注册吗?
我问是因为我似乎真的找不到任何关于此的简明信息。
如果您正在使用活动 你应该删除ondestrory((中的所有引用,监听器和回调 如果您使用的是片段,请在 ondestroyView(( 中清除所有引用、侦听器和回调。
当您的片段处于前台/活动或内存不足时会发生什么,GC运行并且由于任何引用,侦听器和回调,如果Gc无法清理内存,您将获得内存泄漏。
因此,您必须确保在 onDestory(( 中删除所有引用、侦听器和回调(如果是活动(,在 OndestroyView 中删除片段