【发布时间】:2012-04-03 16:01:14
【问题描述】:
我有 LinearLayout,我在其中动态地添加和删除 TextView。要删除它们,我只需调用 .removeAllViews();这当然会导致巨大的内存泄漏。他们是我释放内存的任何方式还是只是我这边的架构设计缺陷。
public void myUpdateFunction() {
//...
((ViewGroup) findViewById(R.id.WordList)).removeAllViews();
ArrayList<String> anagrams = model.getAnagrams();
for (int i = 0; i < anagrams.size(); i++) {
String word = anagrams.get(i);
if (model.getFound(i)) {
addWord(word);
} else {
addWord(word.length());
}
}
//...
}
public void addWord(String word) {
ViewGroup list = (ViewGroup) findViewById(R.id.WordList);
TextView v = new TextView(this);
LayoutParams lparams = new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
v.setLayoutParams(lparams);
v.setTextColor(Color.BLACK);
v.setText(word);
list.addView(v);
}
【问题讨论】:
-
这如何导致内存泄漏?
-
对不起,我的错,显然是 .removeAllViews();只调度要释放的内存,不会立即释放。这就是为什么我看到内存泄漏
标签: android memory-leaks