studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones android android-activity android-service

para - manual de programacion android pdf



actividad de inicio de Android desde el servicio (6)

Alternativamente,

Puede usar su propia clase de aplicación y llamar desde donde lo necesite (especialmente sin actividades).

public class App extends Application { protected static Context context = null; @Override public void onCreate() { super.onCreate(); context = getApplicationContext(); } public static Context getContext() { return context; } }

Y registre su clase de aplicación:

<application android:name="yourpackage.App" ...

Luego llame :

App.getContext();

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 inicio

startService(new Intent(WozzonActivity.this, LocationService.class));

desde mi LocationService mencionado anteriormente no se pudo iniciar la Activity , ¿cómo puedo obtener el contexto de la Activity actual en la clase de servicio?


Desde el interior de la clase de servicio:

Intent dialogIntent = new Intent(this, MyActivity.class); dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(dialogIntent);


Otra cosa que vale la pena mencionar: mientras que 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) estuviera en primer plano (es decir, una de nuestras actividades visible al usuario) fue así:

Intent intent = new Intent(storedActivity, MyActivity.class); intent.setAction(Intent.ACTION_VIEW); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); storedActivity.startActivity(intent);

No sé si ACTION_VIEW o FLAG_ACTIVITY_NEW_TASK tienen algún uso real aquí. La clave del éxito fue

storedActivity.startActivity(intent);

y, por supuesto, FLAG_ACTIVITY_REORDER_TO_FRONT para no crear una instancia de la actividad nuevamente. ¡La mejor de las suertes!


Si necesita recalcular una Actividad que se encuentra en el bacgrounde, desde su servicio, le sugiero el siguiente enlace. Intent.FLAG_ACTIVITY_NEW_TASK no es la solución.

https://.com/a/8759867/1127429


Tuve el mismo problema, y ​​quiero hacerle saber que nada de lo anterior funcionó para mí. Lo que funcionó para mí fue:

Intent dialogIntent = new Intent(this, myActivity.class); dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); this.startActivity(dialogIntent);

y en una de mis subclases, almacenada en un archivo separado, tuve que:

public static Service myService; myService = this; new SubService(myService); Intent dialogIntent = new Intent(myService, myActivity.class); dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); myService.startActivity(dialogIntent);

Todas las otras respuestas me dieron una nullpointerexception .


uno no puede usar el Context del Service ; fue capaz de obtener el Context (paquete) por igual:

Intent intent = new Intent(getApplicationContext(), SomeActivity.class);