Android コンテキストを取得するさまざまな方法の違いは何ですか? 質問する

Android コンテキストを取得するさまざまな方法の違いは何ですか? 質問する

私が目にしたさまざまな Android コードには次のような内容が含まれています。

 public class MyActivity extends Activity {
    public void method() {
       mContext = this;    // since Activity extends Context
       mContext = getApplicationContext();
       mContext = getBaseContext();
    }
 }

しかし、どちらが望ましいのか、どのような状況でどちらを使用すべきなのかについて、適切な説明を見つけることができません。

これに関するドキュメントへのポインタと、間違ったものを選択した場合に何が壊れる可能性があるかについてのガイダンスをいただければ幸いです。

ベストアンサー1

Android のコンテキストに関してはドキュメントが乏しいことに同意しますが、さまざまなソースからいくつかの事実をつなぎ合わせることはできます。

このブログ投稿公式 Google Android 開発者ブログの記事は主にメモリ リークの解決に役立つように書かれていますが、コンテキストに関する有益な情報も提供されています。

通常の Android アプリケーションには、通常、アクティビティとアプリケーションの 2 種類のコンテキストがあります。

記事をもう少し読むと、2 つの違いと、Activity.getApplicationContext()アクティビティ コンテキストではなくアプリケーション コンテキスト () の使用を検討thisする必要がある場合がわかります。基本的に、アプリケーション コンテキストはアプリケーションに関連付けられており、アプリのライフ サイクル全体を通じて常に同じですが、アクティビティ コンテキストはアクティビティに関連付けられており、画面の向きの変更時などにアクティビティが破棄されるため、何度も破棄される可能性があります。

Android SDK に取り組んでいる Google エンジニアの 1 人である Dianne Hackborn の投稿以外、getBaseContext() をいつ使用するかについては何も見つけられませんでした。

getBaseContext() は使用せず、持っているコンテキストだけを使用してください。

それは、Android 開発者ニュースグループ、Android に取り組んでいる少数の人々が実際にそのニュースグループを監視して質問に答えているので、そこで質問することを検討してください。

したがって、全体としては、可能な場合はグローバル アプリケーション コンテキストを使用することが望ましいようです。

おすすめ記事