Я пытаюсь очистить память от некоторых представлений.
Ситуация такая. У меня есть действие, которое я назову А, а другое Б.
Теперь я нажимаю кнопку в действии А, которое вызывает действие Б, которое динамически создает множество представлений. После этого я нажимаю кнопку «Назад», чтобы вернуться к действию A. Повторите тезисы 2 шага много раз.
В результате в DDMS количество объектов и выделенной памяти растет (количество объектов увеличивается на 88 и выделено на 0,002 МБ). Это означает, что представления не удаляются из памяти!
Как мне ПОЛНОСТЬЮ очистить память от представлений?
Спасибо!
Обновление- Вот вам новая информация.
По сути, в моем «реальном мире» у меня есть только одно действие, которое создается много раз. Это происходит потому, что мне нужно связаться с веб-службой, и все ответы создаются в этом новом экземпляре этого действия.
Я попытался решить эту проблему с помощью приведенного ниже кода
@Override
protected void onDestroy() {
super.onDestroy();
nullViewDrawablesRecursive(mRootView);
mRootView = null;
System.gc();
}
и это мой 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);
}
}
И это мой 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) {
}
}
По сути, я пытаюсь удалить все представления и дочерние элементы из их родителя (mRootView) перед уничтожением активности. Это работает довольно хорошо, если я этого не сделаю, объекты и использование памяти будут увеличиваться все больше и больше.
Дело в том, что это не идеально, по-видимому, некоторые типы представлений не уничтожаются. И я думаю, что я «изобретаю велосипед», это кажется чертовски сложным для простой вещи!
Еще раз большое спасибо за попытку мне помочь!