防止OOM的一部分方法

1.及时处理没用的控件,以Gilde为标准写的

   在退出Activity的界面时
   protected void onDestroy() {
   //清除掉activity的内存
    Glide.get(PostDeSportActivity.this).clearMemory();
   //将适配器清理
    if (topicDetPicGVAdapter!=null){
        topicDetPicGVAdapter.cleanAdapter();
        topicDetPicGVAdapter=null;
    }
    //通知系统回收不用的垃圾页面
    System.gc();
    super.onDestroy();
 }

2.列表适配器的清理(1)

public void cleanAdapter(){
    //控件的清理
    Glide.clear(binding.adapterGvPic);
   //将图片的控件清理(似乎没什么用,但写上无错)
    binding.adapterGvPic.setBackgroundResource(0);
} 

3.列表适配器的清理(2)

 //这里我用hashMap来承接自己的控件
public void cleanMap(){
    //用来循环清理Bitmap(如果图片小于2M,则可以不使用,但无错)
    for (int i = 0; i < Imap.size(); i++) {
        if (Imap.get(i)!=null){
            if (list.get(i).substring(list.get(i).length()-3,list.get(i).length()).equals("gif")){
                Glide.clear(Imap.get(i));
                Imap.get(i).setImageDrawable(null);
            }else {
                Glide.clear(Imap.get(i));
                BitmapDrawable bitmapDrawable = (BitmapDrawable) Imap.get(i).getDrawable();
                if (bitmapDrawable != null) {
                    Bitmap bm = bitmapDrawable.getBitmap();
                    if (bm!=null && !bm.isRecycled()) {
                        Imap.get(i).setImageResource(0);
                        bm.recycle();
                    }
                }
            }
        }
    }
    //必须将静态的对象清空
    Imap.clear();
    Imappr.clear();
    Imapor.clear();
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,641评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,473评论 19 139
  • 2016年10月3日8时20分,我的contigo水杯失而复得。 人世间最痛苦的失而复得,莫过于发现自己的体重与年...
    不完美世界阅读 4,296评论 1 1
  • 使用jquery的$.ajax方法时,有时候遇到请求总是报错400的问题,后来查到是有的地方没有说明content...
    咸鱼菠菜阅读 3,126评论 0 0
  • 我是谁? 似乎从小到大,在我所有受过的教育里,在我的长辈那里,从没有得到过这样一个命题,当然也没有过答案,以致于在...
    美朗阅读 2,972评论 0 1