web-dev-qa-db-ja.com

getApplicationContext()、getBaseContext()、getApplication()、getParent()

違いは何ですか:

  1. getApplicationContext()
  2. getBasecontext()
  3. getApplication()
  4. getParent()

簡単な例で詳しく説明していただけますか?

93
Nikunj Patel

getApplicationContext()アプリケーションコンテキストはアプリケーションに関連付けられており、ライフサイクル全体を通じて常に同じです。

getBasecontext()は使用しないでください。アクティビティに関連付けられ、アクティビティが破棄されたときに破棄できる代わりに、Contextを使用してください。

32
Harinder

getApplicationContext()アプリケーションコンテキストはアプリケーションに関連付けられており、ライフサイクルを通じて常に同じです。

getBasecontext()は使用しないでください。アクティビティに関連付けられており、アクティビティが破棄されると破棄される可能性があるコンテキストではなく、コンテキストを使用してください。

getApplication()は、アクティビティとサービスでのみ使用できます。現在のAndroid ActivityおよびServiceの実装では、getApplication()およびgetApplicationContext()は同じオブジェクトを返しますが、これが保証されるわけではありません(特定のベンダー実装など)常にそうなります。マニフェストに登録したApplicationクラスが必要な場合は、getApplicationContext()を呼び出してアプリケーションにキャストしないでください。これはアプリケーションインスタンスではない可能性があるためです(テストフレームワークで明らかに経験したことです)。

getParent()は、現在のビューが子の場合、アクティビティのオブジェクトを返します。つまり、子内で呼び出されたときに、子ビューをホストするアクティビティオブジェクトを返します。

105
Ravi