2

重複の可能性:
別のアクティビティを開始するためのコンテキストの使用

Activityクラスを継承したクラスで「startActivity(new Intent(aContext,class))」メソッドでアクティビティを開始しています。

私の質問は次のとおりです。Intent のコンストラクターの最初のパラメーターは、Application Context または Activity Context のどちらですか? 説明してください 。これらのいずれかを使用することによるメモリの問題は何ですか?

いつアプリケーションコンテキストを使用し、いつアクティビティコンテキストを使用しますか? 簡単な例で説明してください。

4

1 に答える 1

2

はい、メモリの問題があります。問題をよりよく理解するには、以下の開発者サイトを参照してください

アクティビティ コンテキストを使用してアクティビティの範囲外のものを参照すると、ガベージ コレクターはそれを収集できないため、アクティビティでメモリ リークが発生します。

アクティビティから参照すると、アクティビティは終了後に破棄されるため、GC はそれを収集できません。アプリケーション コンテキストはすべてのアプリケーションのスコープを持ち、アプリが終了するまで破棄する必要はありません。

アプリケーション コンテキスト - このコンテキストは、アプリケーションが存続している限り存続し、アクティビティのライフ サイクルには依存しません。コンテキストを必要とする長寿命のオブジェクトを保持する予定がある場合は、アプリケーション オブジェクトを覚えておいてください。Context.getApplicationContext() または Activity.getApplication() を呼び出すことで簡単に取得できます。これを読んでください http://android-developers.blogspot.in/2009/01/avoiding-memory-leaks.html

于 2012-09-06T10:40:26.007 に答える