关于Activity调用Ondestroy()方法之后内存管理器为什么没有释放占用资源

   “ 不能在生命周期方法里调用setContentView(null),这样很容易报异常的,解决方法是写一个空的layout文件,然后绑定。经过修改之后的ondestry方法如下:

@Override
protected void onDestroy() {
    super.onDestroy();
    this.setContentView(R.layout.empty_view);
    fruitList = null ;
    layout_bottom= null ;
    }

 

    新增:最近在研究framework层的源码,发现这文章问题很大,首先,每一个View都是由activity统一管理的,也就是说当activity被销毁的时候(不确定什么时候会调用ondestroy方法)他控制的view也会被销毁,除非activity因为某些引用而没有被销毁那么也会导致他管理的view不会被销毁,所以在写代码的时候只需要注意activity的引用安全就行了,具体的如何注意编写细节大家可以参考trinea大神的博客里面有清晰的讲解,这文章当时写的时候太菜了,大家千万不要入坑,置Null的方法其实有点多此一举了,只能在某些业务场景上用到,比如有一个自定义控件占用空间比较大效率比较低,但是app运行过程中占用过大的资源使用空间,那就可以考虑用这个方法做个即时释放(这种业务场景也比较少,你可以在onpase的时候释放然后再一次onresume的时候再加载。),所以综上如果你检测到activity没有被release 请从线程和服务上找原因。

 

 

转载于:https://my.oschina.net/halfront/blog/407419

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值