[解決済み] getApplication()、getApplicationContext()、getBaseContext()、someClass.thisの違いと使い分け。
質問
私はアンドロイドの初心者で、以下の違いを理解しようとしています。
getApplication()
,
getApplicationContext(
),
getBaseContext()
,
getContext()
と
someClass.this
の2つのメソッドがあり、特に以下のコードラインでは、これらのメソッドをいつ使うかについて説明しています。
トーストを起動するとき、これらの違いは何ですか、そしてどのような場合にこれらを使用するのですか?
Toast.makeText(LoginActivity.this, "LogIn successful", Toast.LENGTH_SHORT).show();
Toast.makeText(getApplication(), "LogIn successful", Toast.LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), "LogIn successful", Toast.LENGTH_SHORT).show();
Toast.makeText(getBaseContext(), "LogIn successful", Toast.LENGTH_SHORT).show();
インテントと同じです。
Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
Intent intent = new Intent(MenuPagina., LoginActivity.class);
Intent intent = new Intent(getBaseContext(), LoginActivity.class);
Intent intent = new Intent(getApplication(), LoginActivity.class);
どのように解決するのですか?
トースト そして インテント を参照する必要があります。 コンテキスト . また getApplication , getApplicationContext , LoginActivity.this そして getBaseContext で、これらはすべてコンテキストへの参照を提供します。
ここで混乱するのは、異なるコンテキストの宣言とその具体的な使用方法です。物事を簡単にするために、Androidフレームワークで利用可能なコンテキストの2つのタイプを数える必要があります。
- アプリケーションコンテキスト
- アクティビティコンテキスト
アプリケーション コンテキストはアプリケーションのライフサイクルに付随しており、アプリケーションの寿命が尽きるまで常に同じです。ですから、もしあなたが トースト を使用する場合は、アプリケーションコンテキストまたはアクティビティコンテキスト(両方)を使用することができます。
アクティビティ
コンテキストは Activity のライフサイクルに付属しており、破棄する場合は Activity の
onDestroy()
が発生した場合に破棄される。新しいアクティビティを起動したい場合、アクティビティのコンテキストをその
インテント
を使用して、新しい起動アクティビティが(アクティビティスタックの観点から)現在のアクティビティに接続されるようにする必要があります。しかし、新しいアクティビティを起動するために、アプリケーションのコンテキストを使用することもできますが、その場合は、フラグを設定する必要があります。
Intent.FLAG_ACTIVITY_NEW_TASK
を設定する必要があります。
では、あなたのケースを参照してください。
LoginActivity.this
は、Activityクラスを継承した独自のクラスを参照していますが、ベースクラス(Activity)はContextクラスも継承しているので、アクティビティコンテキストを提供するために使用することができます。
getApplication()
はApplicationオブジェクトを参照していますが、ApplicationクラスはContextクラスを継承しているので、アプリケーションコンテキストを提供するために使用することができます。
getApplicationContext()
はアプリケーションのコンテキストを提供します。
getBaseContext()
はアクティビティコンテキストを提供します。
ヒント を操作する必要があるときはいつでも
Views
を操作する必要があるときは アクティビティコンテキスト で、それ以外は アプリケーションコンテキスト で十分でしょう。
関連
-
[解決済み] Androidのgravityとlayout_gravityの違いは何ですか?
-
[解決済み] match_parentとfill_parentの違いは何ですか?
-
[解決済み] グリッドレイアウトにおけるフリングジェスチャーの検出
-
[解決済み] getContext() , getApplicationContext() , getBaseContext() と "this" との相違点
-
[解決済み] getApplication() vs. getApplicationContext()
-
[解決済み】「px」、「dip」、「dp」、「sp」の違いは?
-
[解決済み] wrap_contentでRelativeLayoutがフルスクリーンになってしまう
-
[解決済み] 確認(yes/no)用のDialogPreferenceを実装するには?
-
[解決済み] Android Studioからプロジェクトを削除する
-
[解決済み] AndroidでNode.Jsを動作させる
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] getContext() , getApplicationContext() , getBaseContext() と "this" との相違点
-
[解決済み] getApplication() vs. getApplicationContext()
-
[解決済み] Android Contextを取得するための様々な方法の違いは何ですか?
-
[解決済み] 設定ページに移動せずに位置情報サービスをオンにする
-
[解決済み] Android - タイトルバーに戻るボタンが表示される
-
[解決済み] Androidでビットマップから円形領域を切り取る方法
-
[解決済み] 開発者コンソールでのベータ版/アルファ版テストについての説明が必要です。
-
[解決済み] Uri.getPath()で実パスを取得する。
-
[解決済み] Android Studioで複数のデバイスでアプリを自動実行する
-
[解決済み] Android: 複数の選択オプションを持つポップアップを作成する