日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android 释放bitmap fragment,,为什么重复Replace Fragment会内存泄漏

發布時間:2025/3/11 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 释放bitmap fragment,,为什么重复Replace Fragment会内存泄漏 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如圖,當點擊下面的兩個按鈕時,REPALCE上面的Fragmnet,共兩個,反復切換時發生了內存泄漏

這是Fragment的代碼:

public class Fragment2 extends Fragment {

private List lb = new ArrayList<>();

@Nullable

@Override

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

allocBitMap();

allocBitMap();

return inflater.inflate(R.layout.f2, container, false);

}

private void allocBitMap() {

Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.men);

lb.add(b);

}

@Override

public void onDestroy() {

Log.e("onDestroy", "yes, onDestroy");

super.onDestroy();

}

}

這是Activity的部分代碼

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.bt_left:

transFragleft();

break;

case R.id.bt_right:

transFragright();

break;

}

}

Fragment f1 = new Fragment1();

Fragment f2 = new Fragment2();

private void transFragleft(){

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();

ft.replace(R.id.rl_f, f1);

ft.commit();

}

private void transFragright(){

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();

ft.replace(R.id.rl_f, f2);

ft.commit();

}

這是反復切換時的內存狀態:

這是LOGCAT,可以看到onDestroy執行了,整個Fragment生命周期馬上就結束了

04-27 09:46:04.682 29320-29320/com.sg.fragmentpitfall E/onDestroy: yes, onDestroy

04-27 09:46:06.344 29320-29320/com.sg.fragmentpitfall E/onDestroy: yes, onDestroy

04-27 09:46:07.895 29320-29320/com.sg.fragmentpitfall E/onDestroy: yes, onDestroy

那么為什么他占用的那塊內存還在呢?

提問2:

JAVA中怎樣分配一定內存,用于實驗,我這種bitmap的方法太LOW了,而且里面還有CONTEXT;

提問3:

是否應該避免使用FRAGMENT(我知道用HIDE/SHOW的方式要比REPLACE要好

謝謝!

總結

以上是生活随笔為你收集整理的android 释放bitmap fragment,,为什么重复Replace Fragment会内存泄漏的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。