OOM防止の一部の方法

1494 ワード

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