あるアクティビティのContextオブジェクトが別のアクティビティにリークされているかどうかを調べたいと思います。次のコードは、あるアクティビティのコンテキストを別のアクティビティにリークさせますか?Contextオブジェクトが1つのアクティビティから別のアクティビティにリークされているかどうかを調べるにはどうすればよいですか?
Intent intent = new Intent(context, Demo.class);
context.startActivity(intent);
あるアクティビティのContextオブジェクトが別のアクティビティにリークされているかどうかを調べたいと思います。次のコードは、あるアクティビティのコンテキストを別のアクティビティにリークさせますか?Contextオブジェクトが1つのアクティビティから別のアクティビティにリークされているかどうかを調べるにはどうすればよいですか?
Intent intent = new Intent(context, Demo.class);
context.startActivity(intent);
いいえ、あなたのコンテキストを「リークしません」。一般的には、Activityコンテキスト漏れを避けるために、ここに従うようにいくつかのヒントです:
Activity
のView
Sを渡さないでくださいContext
Context
にActivity
の参照が必要な場合は、アプリケーションのContext
(context.getApplicationContext()
)を使用してください。WeakReference
ヒープダンプを検査するEclipse用のメモリ分析ツール(MAT)を使用し、補遺としてありがとうございましたJason。 – FireAndIce
私は箇条書き3について質問があります - アプリケーションコンテキストを常に使用すると疑問を避けるのはなぜですか? – barry
@barry 'Activity'のライフサイクルに結びつけるべきものがあります。たとえば、' BroadcastReceiver'の登録や新しい 'Activity'の開始です。後で 'Activity'' Context'が必要になります。新しい' Activity'はタスクを開始します(そうでなければ 'FLAG_ACTIVITY_NEW_TASK'フラグを使う必要があります)。 –
いくつかのバックグラウンド操作を実行している間Context
上に保持(またはいつでも可能な、本当に)。
[これをチェック](http://stackoverflow.com/questions/9227835/use-of-context-to-start-another-activity/9227958#9227958) –