Утечки памяти при динамически добавленном Text View на Android - PullRequest
0 голосов
/ 03 апреля 2012

У меня есть 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);

}

Ответы [ 2 ]

1 голос
/ 03 апреля 2012

Где утечка памяти? Вам не нужно освобождать память, как это было в C / C ++. GC будет собирать ваши TextViews, если на них больше нет ссылок.

0 голосов
/ 03 апреля 2012

не пытайтесь добавить textview в viewgroup.Сделайте дизайн, состоящий из linearlayout, и добавьте текстовое представление, и удалите представление согласно их индексу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...