Eliminar la antigua instancia de actividad al iniciar una nueva actividad
Estoy buscando para eliminar o quitar una antigua instancia de actividad cuando se crea una nueva instancia (de la misma actividad), sin embargo, tengo que mantener todas las demás actividades en back-stack (por lo tanto FLAG_ACTIVITY_CLEAR_TOP no será suficiente).
Por ejemplo, decir que tengo actividades A, B y C. Comienzo: A -> B -> C -> B. En el inicio de la segunda actividad B necesito eliminar la actividad B existente. Por lo tanto ahora tengo: A -> C -> B corriendo …
- Agregando el listener del tecleo a la imagen de la barra de título
- OnStop () no se llama?
- NoSuchMethod: isDestroyed ()
- Android: No se ha encontrado actividad para manejar el error de intención? Cómo va a resolver
- Respondiendo a las actualizaciones de preferencias en Android
Cualquier ayuda apreciada.
- Todos los iconos de ActionMode Bar no se muestran en Android?
- Actualización de la actividad TextView desde el servicio mediante vinculación de servicio
- ¿Cómo puedo ocultar una actividad?
- Las mejores prácticas para llamar a finish () en una actividad en android?
- ¿Cómo implementar la página maestra y secundaria como Actividad en Android?
- Android - cómo encontrar el nombre de la actividad principal de una aplicación?
- Cómo llamar a startactivity para obtener resultados de una clase que no sea de actividad para obtener los resultados
- Comunicación entre servicios y actividades de Android
Parece que la eliminación de la actividad no es tan fácil como me habría imaginado por lo tanto, no una respuesta completa, pero voy a ir con el uso de FLAG_ACTIVITY_REORDER_TO_FRONT. Esto no eliminará la actividad existente, sino que la moverá a la parte superior de la pila.
Intent intent = new Intent(ctx, Activity.class); intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); startActivity(intent);
Esto permitirá la navegación de actividad descrita anteriormente.
Todavía estoy interesado si alguien sabe de un medio para limpiar la actividad real.
Soy capaz de hacer eso por sobreescribir enNewIntent
@Override protected void onNewIntent(Intent intent) { Bundle extras = intent.getExtras(); Intent msgIntent = new Intent(this, MyActivity.class); msgIntent.putExtras(extras); startActivity(msgIntent); finish(); return; super.onNewIntent(intent); }
Hacer actividad sola tarea
<activity android:name=".MyActivity" android:launchMode="singleTask" > </activity>
Puede utilizar los indicadores de Intent
para eliminar la tarea anterior. Espero que esto ayude.
Intent intent = new Intent(this, Activity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent);
Este indicador hará que cualquier tarea existente que se asociaría con la actividad se borre antes de que se inicie la actividad. Es decir, la actividad se convierte en la nueva raíz de una tarea de otra manera vacía, y todas las actividades viejas están terminadas.
- ¿Cómo puedo mantener la barra de acción / título pero ocultar la barra de notificación
- ¿Por qué estoy recibiendo "llamada a OpenGL ES API sin contexto actual"?