2011-11-04 36 views
7

Si la actividad A está relacionada con la tarea T1 y la actividad B está relacionada con la tarea T2, ¿cómo puedo terminar la actividad A de la actividad B?Cómo finalizar una actividad de otra actividad

Lo necesito porque mi aplicación se puede iniciar desde su acceso directo o por medio de notificaciones.

+0

¿Ambas actividades son parte de la misma aplicación? – FoamyGuy

+0

sí. la actividad a se inició normalmente y la actividad B se inició cuando la aplicación estaba en segundo plano a través de las notificaciones –

+0

Yo diría que use un [servicio] (http://developer.android.com/guide/topics/fundamentals/services.html), no lo he mirado mucho, pero puede serle útil. – user999717

Respuesta

0

no estoy seguro de lo que sería el mejor enfoque, pero uno de los enfoques podría ser pasar Actividad A a un conjunto unitario y traerlo de B y hacer un acabado() sobre ella ...

+0

ver mi comentario anterior –

+0

Puede quitar la referencia de onStop o algo similar ... – Warpzit

3

Mientras que otra los enfoques pueden funcionar, el que parece más directo para mí es enviar un intento a la otra actividad que le dice que se termine a sí mismo. Esa actividad, al recibir esa intención, llama a finish().

+0

Si lo estuviera haciendo, iría con algo como esto. – FoamyGuy

+0

No está permitido mantener referencias de actividades en sus aplicaciones porque el sistema operativo no eliminará esa actividad mientras tenga una referencia. –

+0

Esto es diferente. Que mi sugerencia, pero esto solo funcionará si la actividad iniciada desde la intención es la misma que la actividad en ejecución y no una nueva. No sé cómo funciona eso cuando lo llamas con intenciones, por lo que no puedo responder sin hacer las pruebas. Espero que esto tenga sentido ... – Warpzit

1

Otra alternativa podría ser llamar a la actividad B con el indicador superior claro de su controlador de notificaciones, p.

Intent intent = new Intent(context, HomeActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  
context.startActivity(intent); 

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP

Si se establece, y la actividad de su lanzamiento ya se está ejecutando en la tarea actual, a continuación, en lugar de lanzar una nueva instancia de esa actividad, todas las otras actividades en la parte superior de la misma habrá cerrado y este Intent será entregado a la actividad anterior (ahora en la parte superior) como un nuevo Intento.

+0

borra todas las actividades solo de esa tarea y no afecta las actividades de otra tarea –

2

Necesitaba la misma información y jugar con lo que decían aquí, se me ocurrió esto.

Intent intent = new Intent(MainActivity.this,HighScoresActivity.class); 
         intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
         startActivity(intent); 

cambiar las actividades para satisfacer sus necesidades, pero el FLAG_ACTIVITY_CLEAR_TOP elimina las otras actividades de la pila.

Cuestiones relacionadas