2011-06-22 22 views
212

¿Hay alguna manera confiable de obtener un Context de un Service?Obtener contexto en un servicio

Quiero registrar un receptor de difusión para ACTION_PHONE_STATE_CHANGED pero no necesito mi aplicación para obtener siempre esta información, así que no la coloco en el Manifest.

Sin embargo, no puedo hacer que el receptor de difusión sea eliminado por el GC cuando necesito esta información, así que estoy registrando el receptor de difusión en un Service.

Por lo tanto, necesito un Context para llamar al registerReceiver(). Cuando ya no necesito el ACTION_PHONE_STATE_CHANGED I anule el registro de.

¿Algún consejo?

Respuesta

615

Service es un servicio Context

+151

lol. Soy un novato. ¡¡¡Muchas gracias!!! – user123321

+1

Tuve este problema, pero resultó que era el hilo de trabajo que no tenía contexto. Lo resolví pasando un contexto al construir el hilo. –

+10

Nota: El contexto dentro del servicio no será visible hasta onStart o onStartCommand en los servicios: http://stackoverflow.com/questions/7619917/how-to-get-context-in-android-service-class – class

45

extiende ContextWrapper que se extiende Contexto. Por lo tanto, el Servicio es un Contexto. Use la palabra clave 'this' en el servicio.

6

Desde Service es una Context, el contexto variable debe ser this:

DataBaseManager dbm = Utils.getDataManager(this); 
19
  1. servicio se extiende ContextWrapper
  2. ContextWrapper extiende Contexto

Así que ....

Context context = this; 

(en servicio o las actividades de clase)

0

YourServiceClass.this

GPSTracker gpsTracker = new GPSTracker(TimeService.this); 
Cuestiones relacionadas