1. ホーム
  2. android

[解決済み] Android Contextを取得するための様々な方法の違いは何ですか?

2022-03-25 03:29:36

質問

私が見た様々なAndroidのコードの断片で。

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

しかし、どちらが望ましいのか、どのような場合にどちらを使うべきなのか、まともな説明が見当たりません。

これに関するドキュメントへのポインタや、間違った方を選択した場合に何が壊れるかについてのガイダンスがあれば、非常にありがたいです。

どのように解決するのですか?

AndroidのContextsに関しては、ドキュメントが少ないことに同意しますが、様々なソースからいくつかの事実をまとめることができます。

このブログの記事 は、主にメモリリークに対処するために書かれたものですが、コンテキストに関する良い情報も提供しています。

<ブロッククオート

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

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

getBaseContext()をいつ使うかについては、Android SDKに携わるGoogleエンジニアの一人であるDianne Hackbornの投稿以外には、本当に何も見つかりませんでした。

getBaseContext() は使わないでください。 を使用します。

の投稿からでした。 android-developers ニュースグループ そのニュースグループには、実際にAndroidに携わっている人たちが参加しており、質問に答えてくれます。

ですから、全体として、可能な限りグローバルなアプリケーションコンテキストを使用することが望ましいと思われます。