2011-06-22 3 views
212

Existe-t-il un moyen fiable d'obtenir un Context à partir d'un Service?Obtenir le contexte dans un service

Je veux enregistrer un récepteur de diffusion pour ACTION_PHONE_STATE_CHANGED mais je n'ai pas besoin de mon application pour toujours obtenir cette information, donc je ne le mets pas dans le Manifest.

Cependant, je ne peux pas faire en sorte que le récepteur de télédiffusion soit détruit par le CPG lorsque j'ai besoin de cette information, donc j'inscris le récepteur de diffusion dans un Service. Par conséquent, j'ai besoin d'un Context pour appeler registerReceiver(). Lorsque je n'ai plus besoin du ACTION_PHONE_STATE_CHANGED I désinscrivez-le.

Des conseils?

Répondre

615

Service est un Context

+151

lol. Je suis un noob. Merci beaucoup!!! – user123321

+1

J'ai eu ce problème, mais il s'est avéré que c'était le thread de travail qui n'avait pas de contexte. Je l'ai résolu en passant un contexte lors de la construction du fil. –

+10

Remarque: Le contexte dans le service ne sera pas visible avant onStart ou onStartCommand dans les services: http://stackoverflow.com/questions/7619917/how-to-get-context-in-android-service-class – class

45

service étend ContextWrapper qui étend le contexte. Par conséquent, le service est un contexte. Utilisez le mot clé 'this' dans le service.

6

Depuis Service est un Context, le contexte variable doit être this:

DataBaseManager dbm = Utils.getDataManager(this); 
19
  1. service étend ContextWrapper
  2. ContextWrapper étend Contexte

Alors ....

Context context = this; 

(en service ou classe activité)

0

YourServiceClass.this

GPSTracker gpsTracker = new GPSTracker(TimeService.this); 
Questions connexes