Ciclo de vida de la actividad / proceso: cuándo guardar / cargar datos en / desde el disco

StackOverflow https://stackoverflow.com/questions/1801500

  •  05-07-2019
  •  | 
  •  

Pregunta

Mi aplicación consta de dos actividades, A y B. Estoy considerando esta secuencia de pasos:

  • La actividad A se inicia.
  • A inicia B [A está en pausa, B se está ejecutando].
  • B lanza una intención de mapa [A y B están en pausa ahora].

Ahora el usuario está utilizando la aplicación de mapas y el sistema decide que necesita más memoria. ¿El sistema puede eliminar solo una de mis actividades en la memoria, o siempre eliminará todas las actividades en un " proceso " ¿en esta situación?

Ambas actividades comparten algunos datos estáticos como:

class Data {
    public static String mName;
    public void save() {
      // write to file: mName;
    }
    public void load() {
      // mName = read from file;
    }
}

ActivityA.mTextView.setText(Data.mName);
ActivityB.mListView.addText(Data.mName);

así que cuando cualquier actividad en mi aplicación se llama a OnSaveInstanceBundleSate (), llamo a Data.save () para escribirla en el disco. Ahora la pregunta es, en el método onCreate () de una Actividad, ¿debería simplemente verificar si Data.mName == null, y si es así, asumir que la Actividad está regresando de un estado de eliminación e intentar restaurar desde el disco nuevamente? No tengo claro cuándo se debe hacer esta restauración, considerando que la Actividad A puede o no estar aún viva, etc. - y no quiero corromper el estado si la Actividad A todavía está viva pero B está regresando de un estado de eliminación,

Gracias

Gracias

¿Fue útil?

Solución

Probablemente la mejor solución es mover sus datos estáticos a un Servicio. De esa manera, los datos se pueden guardar y restaurar cuando Android cierra el Servicio en lugar de cuando Android cierra cualquiera de las actividades individuales que utilizan los datos.

Sin usar un Servicio (o alternativamente un Proveedor de contenido, o incluso anular la Aplicación, aunque parece estar mal visto), debe administrar ese ciclo de vida usted mismo, lo que, como ha visto, puede ser complicado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top