두 가지 (더 많거나 적은) 동적 데이터를로드하는 두 가지 종류의 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
아니면 불필요한 조회수를 확보 할 수있는 또 다른 방법이 있습니까?
편집 : 아무도 관심이 있다면 해결책을 찾았습니다. 설명과 같이 내가 notifyDataSetChanged() - 메서드는 데이터를 변경할 때마다 사용해야합니다. List를 사용하는 경우에만 가능합니다. 나의 예에서는 을 언급 한 List<adapterInit>
이 언급 된 방법과 clear()
을 사용하고있다. 또한 매초마다 setAdapter는 입니다. 이제는 데이터 만 변경하고 결과는 예상대로입니다. 시야 수 은 ~ 15.000에서 100-200으로 감소했습니다. 내 github에서 패치를 찾을 수 있습니다.
같은 것을 추가하더라도; if (adapter! = null) 새 어댑터 else adapter.notifyDataSetChanged() 여전히 작동하지 않습니다. 보기가 계속 성장하고 나는 이유를 모른다. 데이터 구조를 List로 변경하려고 했으므로 clear-Method를 호출 할 수 있지만 끝없는 뷰를 생성합니다. – Blechd0se
최근 수정 사항을 확인하셨습니까? 문제가 해결 되었습니까? 나는 아직도 문제가 있다면 추가 할 수있는 몇 가지 추측을 가지고 있습니다. – NameSpace
예 대부분 해결 된 문제입니다. 고마워요! 유일한 단점; 이제 모든 종류의 onPause() -> onResume()에 새로운 뷰 (listview)가 생성됩니다. 당신은 또한 그것을위한 해결책이있는 경우에 나는 아주 행복할. – Blechd0se