Volver a llamar al cliente con el botón Atrás cuando normalmente Atrás está deshabilitado

Mi aplicación está diseñada para ejecutarse como una sola instancia y el botón Atrás no le permite salir de la aplicación y volver a la pantalla Inicio porque se usa internamente para navegar por una jerarquía de pantallas donde cada pantalla puede ser una actividad.

Sin embargo, una aplicación externa puede iniciar una de las actividades internas de la aplicación. Cuando el usuario termina con la actividad para la que está diseñada, la acción intuitiva del usuario es presionar el botón Atrás para regresar al cliente que llama. Pero debido a que evito que salga el botón Atrás, el usuario no puede regresar.

Puedo agregar código para anular esto cuando el código detecta que un cliente está iniciando la actividad. Sin embargo, el problema es que si la aplicación se cierra para regresar, el usuario podría regresar a la aplicación desde donde la dejó. Pero como cerré la aplicación para volver al cliente que llama, el usuario no puede volver a la aplicación como se abrió por última vez. Mi aplicación debe permanecer como una sola instancia, por lo que la actividad que se inicia no se puede crear más de una vez. ¿Alguna sugerencia sobre cómo volver al cliente que llama pero también mantener la aplicación en ejecución si se estaba ejecutando cuando el cliente que llamó usó una de sus actividades?

preguntado el 29 de junio de 12 a las 19:06

1 Respuestas

En general, puede controlar mediante programación el camino de navegación hacia atrás. Echa un vistazo a TaskStackBuilder y la documentación para la tramitación de notificaciones Responder a notificaciones. Parece que lo que intentas hacer es controlar la llamada "pila trasera". Si usa TaskStackBuilder, el comportamiento coincidirá con la versión de la plataforma en la que se encuentre.

En las plataformas anteriores a la 3.0, el botón Atrás recorría toda la pila trasera hasta la primera tarea que el usuario hizo desde que se encendió el teléfono. Post 3.0, atrás no atraviesa los límites de la tarea; para acceder a otras tareas, el usuario hace clic en el icono "Elementos recientes". También está el ícono "arriba" en una aplicación para navegar al "comienzo" de una tarea dentro de una aplicación. TaskStackBuilder "hará lo correcto" para todas las versiones.

En la versión actual de la plataforma, no permitir que Atrás salga de su aplicación está bien, porque Atrás solo debería ir a la primera Actividad en la tarea actual. En versiones anteriores a la 3.0, no permitir que Atrás salga de la aplicación es más problemático, y yo personalmente no lo haría de esa manera, pero depende de ti.

Lo que sucede cuando el usuario hace clic en Atrás después de que un Intent inicia su aplicación debe quedar claro en la documentación que he citado. Básicamente, lo que quieres hacer es volver a la tarea anterior.

Respondido el 29 de junio de 12 a las 22:06

Gracias, miraré TaskStackBuilder. Está claro que en las versiones anteriores a la 3.0, presionar el botón Atrás mientras estaba en la tarea raíz de su aplicación y luego salir de la aplicación no era algo bueno, por eso Google lo cambió. Puede ser aceptable para aplicaciones simples de una pantalla sin jerarquía de pantalla, pero en las jerarquías de pantalla, el usuario esperará que el botón Atrás lo lleve a su pantalla raíz y no salga. - Johann

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.