Android cuando regresa a la actividad se destruye y no se reanuda

Estoy construyendo una aplicación android con dos actividades que utilizan la barra de acción (https://github.com/johannilsson/android-actionbar como estoy apuntando Android 2.2).

Tiene una serie de actividades. Hay una actividad "Inicio", llamada Feed, y otra actividad llamada "Configuración".

El problema que tengo es que usando la función createIntent que se da en la muestra para la barra de acción que estoy usando, la actividad se destruye en lugar de continuar cuando el usuario pulsa el botón de inicio para volver a la actividad de Feed.

Con un poco de depuración encontré que se está destruyendo, no cuando la actividad se detiene y se detiene en primer lugar, pero cuando la solicitud para que se reanude sucede.

public static Intent createIntent(Context context) { Intent i = new Intent(context, Feed.class); i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); return i; } 

Esta es una molestia importante, y ralentiza considerablemente la aplicación, ya que tiene que recargar sus datos para el feed (que se almacena en caché, pero no es instantánea para obtener los datos recargados).

Entonces, ¿cómo puedo evitar este comportamiento? Y por qué está sucediendo esto, ya que creo que la bandera extra debe detener este comportamiento.

Desea utilizar:

 FLAG_ACTIVITY_REORDER_TO_FRONT 

Cita de documentos Android:

Si se establece en un intento pasado a Context.startActivity (), este indicador hará que la actividad iniciada se lleve al frente de la pila de historial de su tarea si ya se está ejecutando.

Por ejemplo, considere una tarea que consta de cuatro actividades: A, B, C, D. Si D llama startActivity () con un Intent que resuelve al componente de la actividad B, entonces B será llevado al frente de la pila de historial, Con este orden resultante: A, C, D, B. Este indicador se ignorará si FLAG_ACTIVITY_CLEAR_TOP también se especifica.

 public static Intent createIntent(Context context) { Intent i = new Intent(context, Feed.class); i.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); return i; } 

Dependiendo de qué clase está lanzando qué, usted puede ser que tenga un problema donde una nueva instancia de su actividad está siendo lanzada y la vieja está siendo destruida. Esto es lo que dice la documentación sobre FLAG_ACTIVITY_CLEAR_TOP :

Si se establece, y la actividad que se está iniciando ya se está ejecutando en la tarea actual, entonces en lugar de iniciar una nueva instancia de esa actividad, todas las otras actividades en la parte superior de la misma se cerrará y esta Intención se entregará a la (ahora en Arriba) actividad antigua como una nueva Intención.

Tenga en cuenta que dice "si la actividad que se está iniciando ya se está ejecutando en la tarea actual …" Así que no estoy seguro, pero esto tendría sentido si su depuración le ha demostrado que la actividad también se está destruyendo.

Al depurar, ¿está buscando los números de "id" para los objetos de su clase? Establezca un punto de interrupción en los onCreate() y onDestroy() de su clase y observe el id de la clase dentro de cada uno. Si son diferentes, entonces usted sabe que tiene dos instancias diferentes de su actividad.

Como una nota / pregunta de lado, ¿cómo estás "apuntando" 2.2 si la ActionBar no estaba disponible hasta 3.0?

  • Relleno entre el icono de inicio de ActionBar y el título
  • ¿Cómo puedo eliminar el icono de configuración en la parte superior derecha de la barra de acción?
  • Barra de acción de contracción pero sólo muestra cuando RecyclerView muestra completamente el primer elemento
  • Botón de inicio de la barra de acción de Android
  • Eliminar el icono de la aplicación y el texto de ActionBar
  • Manténgase en la pestaña actual después de cambiar la orientación Actionbar Android
  • Cómo utilizar SearchView en la barra de herramientas de Android
  • ¿Cómo declaro una barra de herramientas / barra de acción de altura extendida en Android Lollipop?
  • ¿En qué anchura de la pantalla del dp la barra de la acción no se divide cuando android: uiOptions = "splitActionBarWhenNarrow" se fija?
  • Auto Collapse ActionBar SearchView en Soft Keyboard cerrar
  • Cómo mostrar el fragmento seleccionado en la pestaña de la barra de acción
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.