我對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
對象。我的問題是,將初始化CustomAdapter的Activity
包含許多對象,並且我必須通過參考Activity Context
才能顯示ProgressDialog
,這個將會導致內存泄漏,是的,我試過了。應用弱/軟參考來處理這個問題是否安全? A WeakReference
可能在某個時候爲空......當我嘗試初始化我的ProgressDialog
時,這將導致NullPointerException
。
我不認爲你需要WeakReferences或類似的東西來對話或UI代碼等。這些已知的生命週期,應該像這樣管理。通常你使用WeakReferences來實現懶惰的初始化緩存等等。 –
使用正常的強參考代替。 –
@NeilWightman使用普通引用會阻止GC在活動被破壞時收集它們(例如對於方向更改)。 – Pablo