美文网首页
防止OOM的一部分方法

防止OOM的一部分方法

作者: 谜之龙 | 来源:发表于2017-12-08 16:44 被阅读0次

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();
}

相关文章

网友评论

      本文标题:防止OOM的一部分方法

      本文链接:https://www.haomeiwen.com/subject/ccoeixtx.html