Digamos que hay una aplicación que crea una cuenta en AccountManager. Usuario explora el gráfico de actividad bastante complicado de esta aplicación por un tiempo, luego se va a Accounts and Sync
en la configuración de Android, elimina la cuenta y de los signos en (todavía estar en Accounts and Sync
como un usuario diferente.¿Cómo debería responder una aplicación de Android a cambios críticos en el entorno?
he definido un receptor para LOGIN_ACCOUNTS_CHANGED
emisión y puedo cerrar todos los servicios con gracia, pero las actividades siguen ahí, con el nombre del primer usuario en su encabezado (la interfaz de usuario se arruina de varias maneras, pero esta es la más obvia).
Entonces, la pregunta es: ¿qué se debe hacer con estas actividades huérfanas?
- Podría usar algo como
clearTaskOnLaunch
, pero todas las actividades están en segundo plano cuando ocurre el cambio. - Establezca un indicador en SharedPreferences y controle en
onResume()
de cada actividad, luego inicie la actividadclearTask
si es necesario. Muy desordenado. - La mejor opción que pude encontrar es usar
android.os.Process.killProcess(android.os.Process.myPid())
para matar todas las actividades. Esto no es muy elegante, pero hace un trabajo. El único efecto secundario es que la pila de actividades todavía está allí, cuando lo más razonable parece ser comenzar desde la actividadLAUNCHER
, con un historial claro.
Entonces, ¿cuál sería la mejor manera de responder al escenario descrito?
El uso de Process.killProcess() siempre es un truco, nunca la solución correcta. – hackbod
Estoy de acuerdo, de ahí la pregunta. – Ash