dig*_*ino 6 memory android view clear
我试图从记忆中清除一些观点.
这是情况.我有一个活动,我称之为A和另一个B.
现在我按下活动A中的一个按钮,调用活动B,动态创建大量视图.之后,我按回按钮返回活动A重复这两个步骤很多次.
结果是,在DDMS中,对象和内存的数量分配的静止图像增长(对象数量增加了88,分配了0,002MB)这意味着视图不会从内存中删除!
如何从内存中完全清除视图?
谢谢 !
更新 - 在这里您可以获得一些新信息
基本上,在我的"真实世界"中,我只有很多次创建的Activity.发生这种情况是因为我必须与Web服务进行通信,并且所有响应都是在此活动的新实例中创建的.
我尝试使用下面的代码解决此问题
@Override
protected void onDestroy() {
super.onDestroy();
nullViewDrawablesRecursive(mRootView);
mRootView = null;
System.gc();
}
Run Code Online (Sandbox Code Playgroud)
那是我的nullViewDrawablesRecursive
private void nullViewDrawablesRecursive(View view) {
if (view != null) {
try {
ViewGroup viewGroup = (ViewGroup) view;
int childCount = viewGroup.getChildCount();
for (int index = 0; index < childCount; index++) {
View child = viewGroup.getChildAt(index);
nullViewDrawablesRecursive(child);
}
} catch (Exception e) {
}
nullViewDrawable(view);
}
}
Run Code Online (Sandbox Code Playgroud)
那是我的nullViewDrawable
private void nullViewDrawable(View view) {
try {
view.setBackgroundDrawable(null);
} catch (Exception e) {
}
try {
ImageView imageView = (ImageView) view;
imageView.setImageDrawable(null);
imageView.setBackgroundDrawable(null);
} catch (Exception e) {
}
}
Run Code Online (Sandbox Code Playgroud)
基本上我试图在销毁活动之前从其父级(mRootView)中删除所有视图和子级.它工作得很好,如果我不这样做,对象和内存使用量会越来越多.
关键是,它并不完美,显然某些类型的观点不会被破坏.而且我认为我正在"重新发明轮子",这对于一件简单的事情来说似乎很难受!
再次,非常感谢您帮助我!
通常,您无需担心从内存中清除视图。必要时你可以让虚拟机和 Android 框架来处理这个问题。但是,您确实需要担心内存泄漏。如果您的活动正在共享/保留对视图的引用,并且它们无法被垃圾收集,那么这就是一个问题。您可以从这里开始阅读:http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html
不过,在没有看到您的代码的情况下,很难提供一些更具体的建议......
| 归档时间: |
|
| 查看次数: |
9063 次 |
| 最近记录: |