Androide:
public class LocationService extends Service {
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
startActivity(new Intent(this, activity.class));
}
}
Lancé este servicio desde Activity
En Activity
si la condición satisface el comienzo
startService(new Intent(WozzonActivity.this, LocationService.class));
de lo LocationService
mencionado anteriormente no se pudo iniciar Activity
, ¿cómo puedo obtener el contexto de la ejecución actual Activity
en la clase de servicio?
Tuve el mismo problema y quiero hacerle saber que nada de lo anterior funcionó para mí. Lo que funcionó para mí fue:
y en una de mis subclases, almacenadas en un archivo separado, tuve que:
Todas las otras respuestas me dieron un
nullpointerexception
.fuente
Otra cosa que vale la pena mencionar: si bien la respuesta anterior funciona bien cuando nuestra tarea está en segundo plano, la única forma en que podría hacerlo funcionar si nuestra tarea (hecha de servicio + algunas actividades) estaba en primer plano (es decir, una de nuestras actividades visibles al usuario) fue así:
No sé si ACTION_VIEW o FLAG_ACTIVITY_NEW_TASK tienen algún uso real aquí. La clave para tener éxito fue
y, por supuesto, FLAG_ACTIVITY_REORDER_TO_FRONT por no volver a crear instancias de la actividad. ¡La mejor de las suertes!
fuente
uno no puede usar el
Context
de laService
; pude obtener el (paquete)Context
por igual:fuente
FLAG_ACTIVITY_NEW_TASK
banderaAlternativamente,
Puede usar su propia clase de aplicación y llamar desde donde lo necesite (especialmente las que no son actividades).
Y registre su clase de aplicación:
Luego llame :
fuente
context = getApplicationContext();
acontext = this;
Si necesita recuperar una Actividad que está en bacgrounde, de su servicio, le sugiero el siguiente enlace. Intent.FLAG_ACTIVITY_NEW_TASK no es la solución.
https://stackoverflow.com/a/8759867/1127429
fuente