[解決済み] Android Contextを取得するための様々な方法の違いは何ですか?
質問
私が見た様々な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に携わっている人たちが参加しており、質問に答えてくれます。
ですから、全体として、可能な限りグローバルなアプリケーションコンテキストを使用することが望ましいと思われます。
関連
-
adb シェルがデバイスのオフラインを求めるプロンプトを表示する
-
[解決済み] Androidのgravityとlayout_gravityの違いは何ですか?
-
AndroidStudio3.0 Error:Execution failed for task ':app:processDebugResources'.
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidの「コンテキスト」とは何ですか?
-
[解決済み] Androidで画面の大きさをピクセル単位で取得する方法
-
[解決済み] match_parentとfill_parentの違いは何ですか?
-
[解決済み] Androidで'Context'を取得する静的な方法?
-
[解決済み] Androidのレイアウトファイルの「tools:context」とは何ですか?
-
[解決済み】「px」、「dip」、「dp」、「sp」の違いは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Android: なぜ、getBaseContext() を使わなければならないのか?
-
デフォルトのアクティビティが見つからない場合の対処法
-
Androidで発生した問題、解決策とヒント
-
エラータイプ 3 タイプエラー, Error: アクティビティクラス{}が存在しません。アクティビティ起動時のエラー 解決方法
-
Android ProgressBarのスタイルカラーを変更する
-
SpinnerのOnItemSelectedListenerのonItemSelectedメソッドの4つのパラメーターの意味
-
Androidのカラーグラデーション実装のまとめ
-
Android Studioのgitの使用とgitの設定パス
-
[解決済み] getContext() , getApplicationContext() , getBaseContext() と "this" との相違点
-
[解決済み] getApplication()、getApplicationContext()、getBaseContext()、someClass.thisの違いと使い分け。