web-dev-qa-db-ja.com

サービスのコンテキストを取得

ContextからServiceを取得する信頼できる方法はありますか?

ACTION_PHONE_STATE_CHANGEDのブロードキャストレシーバーを登録したいのですが、この情報を常に取得するためにアプリを必要としないので、Manifestに入れません。

ただし、この情報が必要なときにGCによってブロードキャストレシーバーを強制終了させることはできないため、Serviceにブロードキャストレシーバーを登録しています。

したがって、registerReceiver()を呼び出すにはContextが必要です。 ACTION_PHONE_STATE_CHANGEDが不要になったら登録解除それ。

任意のヒント?

252
user123321
715
mibollma

ServiceContextWrapperを拡張し、これはContextを拡張します。したがって、ServiceContextです。サービスで'this'キーワードを使用します。

58
user2138983
  1. ServiceContextWrapperを拡張します
  2. ContextWrapperContextを拡張します

そう....

Context context = this;

(サービスクラスまたはアクティビティクラス)

29
Hardik Gajera

ServiceContextであるため、変数コンテキストはthisでなければなりません。

DataBaseManager dbm = Utils.getDataManager(this);   
7
Elenasys

サービスはすでにコンテキストであるため

あなたもそれを手に入れることができます:

Context mContext = this;

OR

Context mContext = [class name].this;  //[] only specify the class name
// mContext = JobServiceSchedule.this; 
3
Ali Azaz Alam