java 弱引用的再理解

java中的引用类型包括强引用、弱引用、软引用和虚引用。具体各种引用类型的作用和差别这里就不将了,这里主要讲一个在实际开发过程中遇到的一个弱引用的问题,做个记录。

class MainActivity : AppCompatActivity() {

    var view : View ? =null
    lateinit var viewWeakRef: WeakReference<View>

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        testView.setOnClickListener {
            view = View(this)
            Log.e("andytest", "view = $view")
            val ref = viewWeakRef.get()
            Log.e("andytest", "ref = $ref")
        }

        view = View(this)
        Log.e("andytest", "begin view = $view")

        viewWeakRef = WeakReference<View>(view)
    }

}

这是一段demo的代码,在代码中我们有两个成员变量,一个强引用的view和一个弱引用的viewWeakRef,初始化时这两个引用对应的是同一个对象。在点击事件中我们为view重新赋值,然后打印view的对象和弱引用的对象。

会发现这两个的对象不是同一个,也就是无论view的对象怎么变,弱引用中引用的对象都是开始赋值的那个对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值