vida una studio savedinstancestate que metodo ejemplo describe como ciclo activity android

una - que es un activity en android



¿Dónde se guarda el paquete de onSaveInstanceState? (4)

Mi conjetura estaría en la memoria, pero la mejor manera de proteger sus datos sería no confiar en el sistema y cifrarlo. Nunca confíe en el cliente (en este caso el cliente es el sistema operativo).

EDITAR:

Para ser claros, no estoy diciendo cifrar el paquete. Más bien estoy diciendo que no se debe poner ningún dato sensible en el paquete. Si debe colocar datos personalizados en el paquete, cifrarlos.

Pero en última instancia, debe mantener la menor cantidad de datos confidenciales en el cliente como sea posible. Esta es la misma razón por la que un sitio de comercio electrónico solo mostraría los últimos 4 dígitos de una tarjeta de crédito.

Me gustaría saber dónde se almacena el paquete "outState" del método onSaveInstanceState (Bundle outState) .

¿Está almacenado en la memoria o en el almacenamiento del dispositivo?

Me preocupa la seguridad de los datos que se almacenan en el paquete.


No creo que haya ninguna manera de que cualquier proceso de fondo malicioso pueda llegar a los datos del paquete de su aplicación. No está documentado cómo Android trata los datos del paquete. Puede o no puede escribirse en el disco en caso de que su aplicación se limpie, mientras está en segundo plano. Sin embargo, dado que no sabemos si estos datos se guardan o no en el disco, y si lo está, dado que no tenemos ni idea de dónde, y es casi seguro que no tenemos acceso de lectura a esa parte del disco, no lo haría. No se preocupe por que algún proceso de terceros pueda recuperar esos datos.

Por lo tanto, no tengo claro de qué se trata la exposición. Aunque me esté faltando algo. Sin embargo, en respuesta a su pregunta, está absolutamente en la memoria mientras su aplicación está activa, y si su aplicación tiene antecedentes, puede o no estar escrita en algún lugar oculto, pero no lo sabemos porque Google no nos lo ha dicho.

Se destruye junto con la aplicación cuando se recoge la memoria.


Para almacenar datos solo durante el tiempo de vida de la aplicación (es decir, temporalmente), use el evento de actividad onSaveInstanceState (Bundle)

Estos datos solo se mantendrán en la memoria hasta que la aplicación se cierre , los datos estarán disponibles cada vez que esta actividad comience dentro del tiempo de vida actual de la aplicación.

Explicación: si los datos se almacenan aquí por la actividad A, la aplicación muestra una actividad diferente o gira la pantalla (por lo tanto, cierra A) y luego regresa a A, los datos se pueden recuperar para completar los controles. Sin embargo, si la aplicación se cierra y se abre de nuevo, los datos desaparecerán y los controles volverán a sus valores predeterminados.

Ejemplo de uso: almacenamiento de texto escrito por el usuario y selecciones que componen un pedido, entrada de blog, mensaje, etc.

Nota:

Es importante notar que solo la Actividad se destruye y se recrea, ¡no toda tu aplicación! Una aplicación de Android puede consistir en muchas actividades, servicios y proveedores de contenido. Si la aplicación está cerrada (por ejemplo, al presionar el botón "Atrás", todos los valores desaparecerán. SavedInstaceState solo está allí para conservar los datos temporalmente cuando se destruye / recrea una actividad, no la aplicación en sí.

Si desea conservar los datos de forma permanente, debe guardarlos como Preferencias o en un ContentProvider / database.


Aquí hay una respuesta detallada sobre dónde se outState datos de outState Bundle:

... Los paquetes son un mecanismo de IPC, por lo que no va al sistema de archivos. Pero ahora hay una P involucrada, ¿qué proceso es? ¿Y qué está haciendo ese proceso con estos datos? ¿Y tengo que estar preocupado por eso? Resulta que estos paquetes de estado de instancia se almacenan en el servicio del administrador de actividades . Este servicio se implementa bajo el paquete com.android.server.am en el código fuente de Android. Recuerde que las Actividades se apilan una sobre otra y que Android llama a estas pilas "Tareas" ... Cada una de estas tareas se representa internamente con un objeto de la clase TaskRecord . Esta clase contiene una matriz de objetos ActivityRecord , cada uno de los cuales administra el estado de una actividad. ActivityRecord contiene un miembro de tipo Bundle llamado icicle. Este paquete de carámbanos es el estado de la instancia guardada y en realidad se almacena en el espacio de memoria del servicio del Administrador de actividades .

Fuente: https://www.linkedin.com/pulse/android-onsaveinstancestate-bundle-secret-safe-daniel-pietsch/