TextViewをdinamically追加して削除するLinearLayoutがあります。それらを削除するには、私はちょうど を呼び出します.removeAllViews();このオフコースは、大きなメモリリークを引き起こします。彼らの記憶を放棄するのは私のやり方なのか、それとも私の側の建築設計上の欠陥なのですか?Androidで動的に追加されたテキストビューでメモリリークが発生する
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();リリースされる予定のメモリのみをスケジュールし、すぐに解放しません。それが私がメモリリークを見ている理由です –