var _binding: ActivityMainBinding? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
_binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
}
override fun onDestroy() {
super.onDestroy()
_binding = null
}
Activity销毁时就会调用onDestroy(),既然销毁了,为什么还要将绑定的对象设置为空? 这里面有什么逻辑吗?
首先是个变量,那么你要看看这个变量是局部变量还是全局变量。如果是局部变量,在栈里,执行完方法/函数就释放了。如果是全局变量,在堆里,它的生命周期是跟对象生命周期一样的。
如你上面的代码,我问你,如果你不置空有什么影响吗?你的程序照样跑,也不会崩溃。
那置空有什么好处吗?虚拟机对内存的回收不一定是马上的,有很多垃圾回首算法,其中就有引用计数算法,你置空了,对此比较友好。
在Activity里我记得是可以不置空的,但是 你如果在 Fragment 里使用的话 你就得置空了