2011-06-22 7 views
212

ServiceからContextを取得する信頼できる方法はありますか?サービスで文脈を取得する

私はACTION_PHONE_STATE_CHANGEDの放送受信機を登録したいが、私はこの情報を常に得るために私のアプリを必要としないので、私はManifestに入れない。

しかし、私は私がServiceに放送受信機を登録していますので、この情報を必要なときに放送受信機は、GCによって殺されることはできません。

したがって、registerReceiver()に電話するにはContextが必要です。 私はもはやACTION_PHONE_STATE_CHANGED I の登録を解除するときそれを登録します。

ヒント?

答えて

615
+151

笑。私はノブです。どうもありがとうございました!!! – user123321

+1

私はこの問題を抱えていましたが、コンテキストを持たないワーカースレッドであることが判明しました。スレッドを構築するときにコンテキストを渡して解決しました。 –

+10

注:サービス内のコンテキストは、サービス内のonStartまたはonStartCommandまで表示されません。http://stackoverflow.com/questions/7619917/how-to-get-context-in-android-service-class – class

45

サービスコンテキストを拡張ContextWrapperを延びています。したがって、サービスはコンテキストです。 サービスで 'this'キーワードを使用してください。 Serviceので

6

変数文脈がthisでなければならない、Contextある:

DataBaseManager dbm = Utils.getDataManager(this); 
19
  1. サービスContextWrapper
  2. ContextWrapperがコンテキスト

だから....

Context context = this; 
を拡張延び

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

0

YourServiceClass.this

GPSTracker gpsTracker = new GPSTracker(TimeService.this); 
関連する問題