Actividad.finishAffinity () vs Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK

En Android, si desea borrar la pila de Activity actual y iniciar una nueva Activity (por ejemplo, salir de la aplicación y iniciar una Activity inicio de sesión), parece que hay dos enfoques.

¿Hay ventajas para uno sobre el otro si el nivel de la API de destino es superior a 16?

1) Afinidad de acabado

Llamar a finishAffinity() de una actividad. Actividad.finishAffinity

2) Indicadores de intención

 Intent intent = new Intent(this, LoginActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent); finish(); 

El finishAffinity() es adecuado para> = API 16.

El enfoque de indicadores de Intent es adecuado para> = API 11.

Para ser claros, con el propósito de borrar la pila de Activity actual, ambos enfoques parecen funcionar igualmente. Mi pregunta es si hay problemas con cualquiera de los que la gente ha experimentado y, por lo tanto, hay alguna razón para elegir uno sobre el otro?

Funcionalmente, no hay diferencia, pero probando esto en GenyMotion parece haber una ligera diferencia visual. Ver emisión web: https://drive.google.com/file/d/0B8Y77sY7Y2CGRS02c3UyNjd2MGs/view?usp=sharing

Usted tendría que probar que en una amplia gama de dispositivos para ver cómo es coherente es.

Subjetivamente, yo diría que ir con el finishAffinity() porque es más explícito. Sin embargo, si tienes que soportar <SDK 16 no tienes realmente una opción.

Debería usar banderas de intenciones para eso.

¿Qué pasa si usted tiene una gran pila de actividades, va a llamar de cada uno para terminar todos?

Es mucho mejor y más fácil llamar a una Intención.

Espero que esto ayude.

Pruebe este Intent.FLAG_ACTIVITY_CLEAR_TOP se borra la pila de actividades anteriores

Si API> = 21, puede utilizar el comando de:

FinishAndRemoveTask ();

Finaliza todas las actividades de esta tarea y las elimina de la lista de tareas recientes.

https://developer.android.com/reference/android/app/ActivityManager.AppTask.html

  • Pregunta de Android: WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
  • OverridePendingTransition no funciona cuando se utiliza FLAG_ACTIVITY_REORDER_TO_FRONT
  • ¿Qué es un evento de presionar las mejillas?
  • Android - Cómo detener la animación entre los cambios de actividad
  • Cómo agregar banderas con mi intención en el archivo de manifiesto
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.