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("");
}
});
今のところ、1つの理由でprogressDialogを表示しません。context
オブジェクト。私の問題はActivity
、CustomAdapterを初期化するが多くのオブジェクトを保持していることです。Activity Context
表示するには、への参照を渡す必要がありますProgressDialog
。これにより、メモリリークが発生します。はい、試しました。これに対処するために弱/ソフト参照を適用するのは安全ですか?AWeakReference
は、いつかnullになる可能性があります。これにより、NullPointerException
を初期化しようとしたときにが発生しますProgressDialog
。