2011-11-11 11 views

Respuesta

7

No creo que haya ninguna forma de que un proceso de fondo malicioso pueda llegar a los datos del paquete de su aplicación. no documenta cómo Android trata los datos del paquete. Puede escribirse o no en el disco en el caso de que se limpie su aplicación, mientras que está en segundo plano. Sin embargo, dado que no sabemos si estos datos se guardan o no en el disco, si lo es, dado que no tenemos ni idea de dónde, y casi certa En realidad, no tengo acceso de lectura a esa parte del disco, no me preocuparía que un proceso de terceros pueda recuperar esos datos.

En consecuencia, no estoy seguro de lo que podría pensar que es la exposición.Aunque me puede estar perdiendo algo. Sin embargo, en respuesta a su pregunta, está absolutamente en la memoria mientras su aplicación está activa, y si su aplicación está atrasada puede escribirse o no 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 recopila la memoria.

+0

Gracias eso es exactamente lo que quería saber – Jleuleu

+2

Esta es una respuesta inexacta. Considere el caso en que el sistema operativo mata automáticamente el proceso de la aplicación (mientras la aplicación estaba en segundo plano) y luego el usuario vuelve a la aplicación, luego OS restaura la aplicación (crea un nuevo proceso y restaura la pila de actividades). A pesar de que el proceso de la aplicación no estuvo presente durante un tiempo, el paquete se suministra a una actividad restaurada, por lo que de alguna manera/estaba almacenado en algún lugar dentro del sistema. A su vez, el sistema simplemente no determina cómo exactamente almacena los paquetes, por lo que en teoría podría usar el sistema de archivos. –

+1

También puede consultar la respuesta relacionada de CommonsWare: http://stackoverflow.com/a/12468776/247013 –

1

Supongo que estaría en la memoria, pero la mejor manera de proteger sus datos sería no confiar en el sistema y encriptarlo. Nunca confíes en el cliente (en este caso, el cliente es el SO).

EDIT:

Para que quede claro, no estoy diciendo que cifra el paquete. Más bien digo que cualquier información confidencial no debe incluirse en el paquete. Si debe ponga los datos personalizados en el paquete, luego encripte.

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

+0

Android usa 'onSaveInstanceState' /' onRestoreInstanceState' para persistir en el estado de la interfaz de usuario de cada vista cuando el sistema destruye una actividad que puede necesitar restaurarse en el futuro (por ejemplo, rotación de pantalla o poca memoria). Si realmente desea encriptar esa información (no es así), deberá guardar y restaurar toda la información de estado para todas las vistas usted mismo. No puedo pensar en ninguna aplicación donde el nombre del campo de texto que tiene el foco sea algo que necesitaría encriptar ... – user113215

+0

No digo encriptar el paquete. Más bien digo que cualquier información confidencial no debe incluirse en el paquete. Si debe colocar datos personalizados en el paquete, encriptelos. – pjco

8

Para almacenar datos sólo para toda la vida de aplicaciones (es decir, temporalmente), utilizar el evento onSaveInstanceState (Bundle) la actividad

estos datos sólo se llevará a cabo en la memoria hasta que la aplicación se cierra, los datos serán disponible en cualquier momento en que esta actividad comience dentro de la vida actual de la aplicación.

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

Ejemplo de uso: texto escrito en almacenar por el usuario y las selecciones que componen una orden, un blog, mensaje, etc ...

Nota:

Es importante notar que sólo la actividad es destruido y recreado, ¡no toda tu aplicación! ¡Una aplicación de Android puede incluir muchas actividades, servicios y proveedores de contenido! Si la aplicación está cerrada (por ejemplo presionando el botón "Atrás", todos los valores se habrán eliminado. SavedInstaceState solo está allí para preservar los datos temporales cuando se destruye/recrea una actividad, no la aplicación en sí.

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

+0

Gracias, solo quería saber que los datos se guardan en la memoria. – Jleuleu

Cuestiones relacionadas