В моем приложении у меня есть два типа ArrayAdapter, которые загружают динамические данные (более или менее). Первый связан с потоком, который срабатывает каждую секунду, чтобы обновить данные. Второй обновляет данные с помощью действия onClick.Бесплатно не используется Просмотр при создании новых
Теперь, когда я запускаю свое приложение, я могу видеть с помощью dumpsys meminfo, что счетчик просмотров постоянно увеличивается (пока на фрагменте с потоком). Очевидно, что это вызывает огромную утечку памяти через несколько секунд/минут. Тот же происходит для onClick one.
Мое предположение заключается в том, что эти «старые» данные все еще хранятся внутри этого вида и не будут освобождаться. Есть ли способ удалить каждый старый вид? Мой адаптер находится здесь; https://github.com/Blechd0se/android_packages_apps_AeroControl/blob/master/AeroControl/src/com/aero/control/adapter/AeroAdapter.java
Основной метод, который использует адаптер здесь (createList()); https://github.com/Blechd0se/android_packages_apps_AeroControl/blob/master/AeroControl/src/com/aero/control/fragments/AeroFragment.java
Или есть еще один способ просто освободить эти ненужные виды?
EDIT: Я нашел решение, если кто-либо заинтересован; Как описано, мне нужно использовать метод notifyDataSetChanged(), когда я меняю данные. Это возможно только при работе со списком. В моем примере его List<adapterInit>
, который использует меня для использования указанного метода, а также clear()
. Также setAdapter на каждую секунду - очень плохая идея. Теперь я изменяю только данные, и результат как и ожидалось. Количество просмотров уменьшилось с ~ 15.000 до 100-200. Патч можно найти на моем github.
Даже если я добавляю что-то вроде; if (adapter! = null) новый адаптер else adapter.notifyDataSetChanged() он все равно не будет работать. Взгляды продолжают расти, и я не знаю, почему. Я попытался изменить структуру данных на список, поэтому я могу вызвать clear-Method, но все равно создаст бесконечные представления. – Blechd0se
Я вижу ваше последнее редактирование, проблема решена? У меня есть некоторые догадки, которые я могу добавить, если у вас все еще есть проблемы. – NameSpace
Да проблема в основном решена. Большое спасибо! Единственный недостаток; он создает теперь новое представление (listview) для каждого из onPause() -> onResume(), которое выглядит нормально. Если у вас есть решение, я был бы очень доволен. – Blechd0se