2012-03-21 8 views

答えて

56

あなたのアクティビティを渡す場合は、AsyncTaskのどこかにあるでしょう。次に、その参照を弱い参照に保存します。その後、参照を解除してonPostExecuteで再度使用することができます。

クラスのメンバー:AsyncTask

WeakReference<Activity> weakActivity; 

どこか、おそらくどちらかのコンストラクタまたはonPreExecute

weakActivity = new WeakReference<Activity>(activity); 

onPostExecuteで:

Activity activity = weakActivity.get(); 
if (activity != null) { 
    // do your stuff with activity here 
} 
+0

素敵な、それは本当に助けのおかげ –

+1

'activity'それでも無効な参照i f GCは時間が経つわけではありませんでした。私が間違っていれば私を修正してください。 – q126y

0

以前のアクティビティを復元する場合は、onSaveInstanceStateに行ってから後で復元してください。

チェック詳細ここ

Saving application state

1

ため、このリンクは、コンテキストを保存するために弱い参照の一例です。

WeakReference<Context> cReference = new WeakReference<Context>(getApplicationContext()); 

このweakReferenceを使用して、Activity/Context関連の作業を行うことができます。

関連する問題