Android-Fragment 切换造成内存溢出,导致内存增长
2018-04-04 17:44
423 查看
当在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());
}如有错误,请指正。
由于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());
}如有错误,请指正。
相关文章推荐
- Android中图片过大造成内存溢出,OOM(OutOfMemory)异常解决方法(2)
- Android 异步获取网络图片并处理导致内存溢出问题解决方法
- Android 异步获取网络图片并处理导致内存溢出问题解决方法
- Android中图片过大造成内存溢出,OOM(OutOfMemory)异常解决方法(4)
- android图片占用计算&导致内存溢出的问题
- Android 异步获取网络图片并处理导致内存溢出问题解决方法
- Android viewpager 切换adapter内存溢出的问题
- 【移动开发】Android中图片过大造成内存溢出,OOM(OutOfMemory)异常解决方法 推荐
- Android---加载图片 解决图片过大导致的内存溢出问题
- activity使用Intent频繁切换导致内存溢出:dequeue native buffer fail:Out of memory
- android TabHost切换导致FragmentActivity重启
- Android JNI调用OpenCV,长时间运行内存异常,导致闪退的log分析和解决---(ReferenceTable overflow (max=1024)造成的)
- Android中图片过大造成内存溢出,OOM(OutOfMemory)异常解决方法(3)
- Viewpager + fragment,其中一些fragment不被保存在内存,切换导致初始化问题
- android中避免大图片解析导致内存溢出 OutOfMemoryError的优化方法
- Android中图片过大造成内存溢出,OOM(OutOfMemory)异常解决方法(1)
- Android中图片过大造成内存溢出,OOM(OutOfMemory)异常解决方法
- 关于android app 中Viewpager中内嵌viewpager,切换第一个viewpager导致fragment中内嵌的viewpager里的fragment内容空白问题
- Android中横竖屏切换加载不同布局导致fragment数据丢失的问题
- android 中Handler 对内存造成溢出和泄露的优化方案 使用 Weak Handler Memory safer implementation of android.os.Handler