2012-12-01 2 views
5

は、私が入力パラメータとしてコンテキストを必要とする他のいくつかのクラスにメソッドを呼び出したいが、私はサービスの3可能性があります。サービスではどのコンテキストを使用するのですか?

- getApplicationContext 
- getBaseContext 
- getApplication 

は1 ScreenServiceメイン異なっているものをextends Service

で使用するが。私は何度か前に読んでいますが、これはgetApplicationContextを使用するとうまくいきません。本当?

答えて

6

アプリケーションコンテキストは、アプリケーションのライフサイクルに関連付けられており、アプリケーションの存続期間を通じて常に同じになります。 Toastを使用している場合は、アプリケーション内のどこからでもトーストでき、ウィンドウにアタッチされていないため、アプリケーションコンテキストまたはアクティビティコンテキスト(どちらも)を使用できます。

アクティビティコンテキストはアクティビティのライフサイクルに関連付けられており、アクティビティのonDestroyが発生すると破棄される可能性があります。

getApplication()ですが、Applicationオブジェクトを参照するが、ApplicationクラスはContextクラスを拡張しているため、アプリケーションコンテキストを提供するために使用できます。

getApplicationContext()は、アプリケーションコンテキストを提供します。

getBaseContext()は、アクティビティコンテキストを提供します。このコンテキストは、それまではアプリケーションがシャットダウン住んでいるので、あなたがその目的のためにあなたがコンテキストを使用している理由

は、それが依存、

getApplicationContext()が最も好ましい方法です。

getBaseContext()コンテキストはウィジェットとビューで使用できます。

トーストメッセージやインテント作成時には、すべてgetApplicationContext()を使用しても同じエフェクトイベントが発生しますが、最も正しいです。 Toastはどのような種類のViewも添付していないので、あらゆる種類のContextを受け入れます。その通知。

+0

ありがとうSahiuMahajanMj – senzacionale

関連する問題