Apress Pro Android 4で、著者は次のように述べています:
[...]デバイスを回転すると、現在実行中のアクティビティのコンテキストは無効になります。 [...] 1つのアプローチは、ハード参照の代わりにアクティビティへの弱い参照を使用することです[...]
しかし、著者はこれを提案するだけであり、それがどのように行われるかを述べていません。以前にこれを行った人は、例を挙げてください。
AsyncTask
のどこかに、アクティビティを渡す必要があります。次に、その参照を弱参照に保存します。その後、onPostExecute
で逆参照して再度使用できます。
クラスのメンバー:
WeakReference<Activity> weakActivity;
AsyncTask
のどこか、おそらくコンストラクタかonPreExecute
のいずれか:
weakActivity = new WeakReference<Activity>(activity);
onPostExecute
内:
Activity activity = weakActivity.get();
if (activity != null) {
// do your stuff with activity here
}
以下は、コンテキストを格納するWeakReferenceの例です。
WeakReference<Context> cReference = new WeakReference<Context>(getApplicationContext());
これで、このweakReferenceを使用して、アクティビティ/コンテキスト関連の作業を行うことができます。