Estoy intentando crear un servicio que se ejecuta incluso cuando mi aplicación se cierra. Sin embargo, tengo que usar mi aplicación Contexto dentro de este servicio . Cuando la aplicación se está ejecutando, el servicio funciona tan bien, pero cuando cierro la aplicación (se llama () OnDestroy), los getContext()
vuelve siempre null
.
Servicio
public class SubscribeService extends Service {
private Context context;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
context = this; //Returns null when service is running on background
context = MyApp.getContext(); //Also null
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//do stuff using context
}
MiApl
public class MyApp extends Application {
private static Context context;
public static Context getContext() {
return context.getApplicationContext();
}
@Override
public void onCreate() {
context = getApplicationContext();
super.onCreate();
}
}
de inicio del servicio de la Actividad onCreate ()
startService(new Intent(this, SubscribeService.class));
¿Cómo debo usar el Contexto en este escenario?
Editar
Logrado conseguir que funcione correctamente después de Onik ayuda 's. Sólo tenía que llamar a la MyApp.getContext();
anterior super.onCreate();
, así:
@Override
public void onCreate() {
context = MyApp.getContext();
super.onCreate();
}
Servicio extiende Contexto . Se puede utilizar this
, donde this
es la referencia a la Service
instancia.
Poner más detalles en mi comentario a continuación en relación con el siguiente código de SubscribeService clase:
@Override
public void onCreate() {
super.onCreate();
context = this;
context = MyApp.getContext();
}
En sus Service
's onCreate()
context = this
no puede ser null
por un paradigma fundamental de programación.