Will 'Bundle savedInstanceState' estará vivo después de la matanza de Application?

Will savedInstanceState paquete en el método onCreate() estar vivo (no nulo) después de la aplicación se está matando? Si es así, donde este paquete se almacena en el sistema.

Si Android mata el proceso que aloja su aplicación, todavía mantiene el "estado de instancia guardada" de todas las actividades activas (no terminadas). Estos datos son almacenados por ActivityManager . Si el usuario vuelve a su aplicación, Android creará un nuevo proceso para la aplicación, volverá a instanciar la instancia de la Application y, a continuación, creará una instancia de la actividad superior en la pila de actividades . A continuación, llamará a onCreate() en esa instancia de actividad, pasándole el "estado de instancia guardada" que fue guardado más recientemente para esa actividad.

Si reinicia su teléfono, todos estos datos se pierden (Android no guarda el estado de la aplicación a través de reinicios).

No, no, la aplicación Android mantendrá su estado siempre y cuando se ejecute: (primer plano y fondo).

Si está buscando algo que puede abarcar diferentes aplicaciones del ciclo de vida, use algo como SharedPreferences.

Respecto a

Si el sistema mata su proceso de solicitud y el usuario vuelve a su actividad

Esto sólo ocurre cuando android necesita memoria y tiene que matar su actividad para liberar recursos y su actividad en la pila de actividades. Su documentado que es una forma conveniente para mantener la experiencia del usuario.

Documentaciones android:

Una actividad de fondo (actividad que no es visible para el usuario y que ha sido detenida) ya no es crítica, por lo que el sistema puede matar con seguridad su proceso para recuperar la memoria de otros procesos en primer plano o visibles. Si su proceso necesita ser eliminado, cuando el usuario vuelve a la actividad (haciéndola visible en la pantalla de nuevo), su método onCreate (android.os.Bundle) será llamado con el savedInstanceState que había suministrado previamente en onSaveInstanceState (android .os.Bundle)

De modo que pueda reiniciarse en el mismo estado en que el usuario lo dejó por última vez.

Por lo que no debería esperar que el InstanceState se mantenga todo el tiempo. Código fuente de la actividad en codegrep

Editar

Por la búsqueda google para el android instance state He venido por este recurso Android Recrear una actividad

Cuando su actividad se destruye porque el usuario presiona Atrás o la actividad termina, el concepto del sistema de esa instancia de actividad se ha ido para siempre porque el comportamiento indica que la actividad ya no es necesaria. Sin embargo, si el sistema destruye la actividad debido a las restricciones del sistema (en lugar del comportamiento normal de la aplicación), entonces, aunque la instancia de Actividad actual ha desaparecido, el sistema recuerda que existía tal que si el usuario vuelve a ella, el sistema crea una nueva Instancia de la actividad que utiliza un conjunto de datos guardados que describe el estado de la actividad cuando se destruyó. Los datos guardados que el sistema utiliza para restaurar el estado anterior se denominan "estado de instancia" y es una colección de pares clave-valor almacenados en un objeto Bundle.

Editar 2 Después de excavar alrededor de Android internos, parece que se trata de ActivityManagerNative

Cada vez que una actividad está pausando su estado se pasa Utilizando un objeto de parcela al proceso ActivityManager.

  public void activityPaused(IBinder token, Bundle state) throws RemoteException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); data.writeInterfaceToken(IActivityManager.descriptor); data.writeStrongBinder(token); data.writeBundle(state); mRemote.transact(ACTIVITY_PAUSED_TRANSACTION, data, reply, 0); reply.readException(); data.recycle(); reply.recycle(); } 

Y cuando ActivityManagerNative crea una actividad, pasa a ese estado de nuevo a la actividad usando Parcel

  public boolean onTransact(int code, Parcel data, Parcel reply, int flags) throws RemoteException { switch (code) { case START_ACTIVITY_TRANSACTION: { data.enforceInterface(IActivityManager.descriptor); IBinder b = data.readStrongBinder(); IApplicationThread app = ApplicationThreadNative.asInterface(b); Intent intent = Intent.CREATOR.createFromParcel(data); String resolvedType = data.readString(); Uri[] grantedUriPermissions = data.createTypedArray(Uri.CREATOR); int grantedMode = data.readInt(); IBinder resultTo = data.readStrongBinder(); String resultWho = data.readString(); int requestCode = data.readInt(); boolean onlyIfNeeded = data.readInt() != 0; boolean debug = data.readInt() != 0; int result = startActivity(app, intent, resolvedType, grantedUriPermissions, grantedMode, resultTo, resultWho, requestCode, onlyIfNeeded, debug); reply.writeNoException(); reply.writeInt(result); return true; } ..... 

La siguiente tabla de uno de los materiales de capacitación de Android podría ser más útil.

En ese caso, el paquete salvado por onSavedInstanceState es válido mientras la aplicación está ABIERTA, lo que significa que la aplicación puede estar en PAUSA o incluso PARADA y DESTRUIR (debido a razones tales como rotación) pero NO SALIR con el botón Atrás.

La tabla también muestra otras opciones disponibles si no onSavedInstanceState .

Introduzca aquí la descripción de la imagen

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.