Android-Fragment 切換造成記憶體溢位,導致記憶體增長
當在Activity裡面有多個fragment的時候,來回切換fragment,會造成記憶體使用一直在增加。
由於fragment在呼叫remove之後,裡面的view的引用導致記憶體回收不了,造成記憶體洩露,所以不斷的new Fragment切換之後,記憶體使用一直在增加。
解決辦法:
在BaseFragment類裡面的onDestroyView()方法裡面呼叫如下方法
private void unbindDrawables(View view)
{
if (view.getBackground() != null)
{
view.getBackground().setCallback(null);
}
if (view instanceof ViewGroup && !(view instanceof AdapterView))
{
for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++)
{
unbindDrawables(((ViewGroup) view).getChildAt(i));
}
((ViewGroup) view).removeAllViews();
}
}
例如:
@Override
public void onDestroyView() {
super.onDestroyView();
unbindDrawables(getView());
}
如有錯誤,請指正。相關文章
- return new物件造成溢位記憶體物件記憶體
- Java棧溢位|記憶體洩漏|記憶體溢位Java記憶體溢位
- 記憶體溢位記憶體溢位
- 記憶體溢位和記憶體洩露記憶體溢位記憶體洩露
- 記憶體洩漏和記憶體溢位記憶體溢位
- 記一次記憶體溢位導致的生產事故記憶體溢位
- 【記憶體洩漏和記憶體溢位】JavaScript之深入淺出理解記憶體洩漏和記憶體溢位記憶體溢位JavaScript
- Java記憶體溢位Java記憶體溢位
- JBOSS記憶體溢位記憶體溢位
- JVM——記憶體洩漏與記憶體溢位JVM記憶體溢位
- JavaScript之記憶體溢位和記憶體洩漏JavaScript記憶體溢位
- WebLogic: 記憶體溢位Web記憶體溢位
- java 程式記憶體溢位Java記憶體溢位
- 記憶體溢位問題記憶體溢位
- 記憶體溢位的分析記憶體溢位
- 記一次Orika使用不當導致的記憶體溢位記憶體溢位
- JAVA記憶體區域與記憶體溢位異常Java記憶體溢位
- 記憶體洩漏與記憶體溢位神比較記憶體溢位
- [Java基礎]記憶體洩漏和記憶體溢位Java記憶體溢位
- Android記憶體溢位分析Android記憶體溢位
- Java記憶體溢位情況Java記憶體溢位
- 記憶體溢位的問題記憶體溢位
- Flume記憶體溢位錯誤記憶體溢位
- JNI練習-記憶體溢位記憶體溢位
- jvm記憶體設定及記憶體溢位、解決方案JVM記憶體溢位
- 【轉】java中的記憶體溢位和記憶體洩漏Java記憶體溢位
- 誰動了我的記憶體之 PHP 記憶體溢位PHP記憶體溢位
- java記憶體溢位和記憶體洩漏的區別Java記憶體溢位
- 誰動了我的記憶體之PHP記憶體溢位PHP記憶體溢位
- 記憶體溢位:native溢位 和 上層溢位記憶體溢位
- JVM(2)-Java記憶體區域與記憶體溢位異常JVMJava記憶體溢位
- 來了解一下記憶體溢位和記憶體洩漏記憶體溢位
- 深入理解JVM之記憶體區域與記憶體溢位JVM記憶體溢位
- 日誌導致jvm記憶體溢位相關問題JVM記憶體溢位
- 為什麼 Go 中有的自定義 error 會導致記憶體溢位GoError記憶體溢位
- Android載入圖片導致記憶體溢位(Out of Memory異常)Android記憶體溢位
- JVM記憶體溢位及合理配置JVM記憶體溢位
- 傳說中的記憶體溢位記憶體溢位