Java 환경에서의 약한 참조에 대해 알고 싶습니다. 두 주제에 관해서도 약간 읽었습니다. 요약하자면 약한 참조는 이름이 말하는 것처럼 객체에 대한 약한 참조입니다. 즉,이 개체에 대한 참조는 GC
에서 쉽게 수집 할 수 있습니다. 약한 참조는 다음과 같이 생성됩니다.약한 참조 및 약한 참조
WeakReference<SomeOtherRef> weakReference = new WeakReference(someOtherRef);
반면에 약한 참조는 약한 참조보다 훨씬 오래있을 것입니다. 그래서 내 질문은 :
ListView
에 대한 사용자 지정 어댑터이 클래스는 모든 기본 ListView
물건을 처리 할 것입니다. 사용자가 내 목록의 항목을 클릭하면 AsyncTask는 시작하라.
convertView.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
LoadCase loadCase = new LoadCase(position, holder);
loadCase.execute("");
}
});
현재로서는 어떤 이유로 progressDialog를 표시하지 않습니다. context
개체입니다. 내 문제는 Activity
CustomAdapter 많은 개체를 보유하고 있으며 ProgressDialog
,이 것이다 메모리 누수를 일으킬 표시하려면 Activity Context
에 대한 참조를 전달해야합니다, 예, 시도했습니다. 이것을 처리하기 위해 Weak/Soft 참조를 적용하는 것이 안전합니까? WeakReference
은 언젠가 null 일 수 있습니다. ProgressDialog
을 초기화하려고하면 NullPointerException
이됩니다.
WeakReferences 또는 대화 상자 나 UI 코드 등을 원한다고 생각하지 않습니다. 이러한 것들은 알려진 수명주기를 가지고 있으며 이와 같이 관리되어야합니다. 일반적으로 lazy initialised cache와 같은 것에 대해서는 WeakReferences를 사용합니다. –
대신 정상적인 강력한 참조를 사용하십시오. –
정상적인 참조를 사용하는 @NeilWightman은 활동이 파괴 된 경우 (예 : 오리엔테이션 변경의 경우) GC가 수집하지 못하게합니다. – Pablo