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


回答:


33

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

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


16
getApplication()およびgetParent()についてはどう
ですか

107

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

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

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

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


16
既に述べたように、getBaseContext()を使用すべきではありません。それほど重要でない場合は、なぜそれがコーディングにあり、その主な利点は何ですか。詳細について教えてください
ピルファヒムシャー

getBaseContext()は、非常に特殊な状況で使用する必要があります。非常に良い説明がここにあります- medium.com/@ali.muzaffar/...
Lomzaの
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.