2012-03-06 14 views
10

Sé que este tema se ha discutido anteriormente en Desbordamiento de pila. Pero todavía hay algunas cosas que no están claras cuando leo publicaciones anteriores al respecto. Así que aquí están:Diferencia entre preferencia compartida y sqlite

  • Sé que utilizamos preferencia compartida para pequeños conjuntos de datos y manipulación de datos SQLite para grandes, por lo que si sólo quiero guardar un nombre de usuario y la contraseña debemos utilizar las preferencias compartidas?
  • ¿No se perderán las preferencias compartidas cuando el usuario desinstala la aplicación? Por ejemplo, descargué una aplicación llamada abc y guardo mi nombre de usuario y contraseña. Luego desinstalo esta aplicación de un teléfono e intento acceder desde otro teléfono con el mismo nombre de usuario y contraseña. ¿Esto se guardará utilizando preferencias compartidas o se perderán los datos?
  • ¿Cuál es la razón principal por la que utilizamos una sobre otra al lado de conjuntos de datos grandes y pequeños?
+0

tengo la pregunta también! Quiero almacenar algunos datos de cadenas y datos, que los usuarios los llenen (quiero almacenar números de elementos ilimitados). por favor, ¿cuál de ellos es mejor para este caso? ¡Gracias! –

Respuesta

18

Puede pensar en la diferencia entre las preferencias compartidas y una base de datos SQLite en términos de tamaño de datos, pero eso no es del todo exacto. Una mejor manera de pensarlo es en términos de la estructura de los datos que desea almacenar.

Las preferencias compartidas solo pueden almacenar pares clave-valor, mientras que una base de datos SQLite es mucho más flexible. Por lo tanto, las preferencias compartidas son particularmente útiles para almacenar las preferencias del usuario, p. si la aplicación muestra notificaciones, etc. Mientras que una base de datos SQLite es útil para casi cualquier cosa.

Ambos orígenes de datos son locales, pero hay que tener en cuenta la capacidad de hacer una copia de seguridad de los datos de la aplicación en el almacenamiento en la nube vinculado a la cuenta de Google del usuario. Esto hace que sea mucho más fácil para sus usuarios cambiar los dispositivos y para que sus aplicaciones se transfieran fácilmente al nuevo dispositivo. Para obtener más información, consulte here.

1

almacenan sus datos localmente, por lo que al desinstalar la aplicación se eliminarán ambos. aparte de eso, SharedPreferences es más fácil de programar y tienes razón sobre los montos de los datos.

+0

Entonces, incluso con sqlite, ¿no podré guardar datos? ¿Cómo se guardan los datos? ¿De qué sirve usarlos si no puede guardar o recuperar el nombre de usuario y las contraseñas? – NoviceMe

+0

puede guardar los datos, siempre y cuando el usuario no elimine la aplicación. Si desea que los datos persistan si el usuario elimina y vuelve a instalar la aplicación, debe configurar un servidor web. –

0

En general, las preferencias compartidas se deben usar si desea permitir que su usuario manipule directamente ciertos campos de datos. Las preferencias compartidas son básicamente preferencias del usuario; si desea que el usuario reconfigure la aplicación para comportarse de diferentes maneras, debe exponer esa funcionalidad como una preferencia compartida. Por otro lado, la base de datos SQLite debe utilizarse si desea limitar la visibilidad de los datos a solo la aplicación, si desea una garantía más sólida de que los datos sean persistentes, y si desea que la aplicación se comporte independientemente de lo que es almacenado en la base de datos. Por supuesto, puede usar ambos en una aplicación.

Las preferencias compartidas y la base de datos son parte de los datos locales que almacena la aplicación. Si desinstala la aplicación, se eliminarán ambos almacenes de datos.

4

En la situación que describió, perderá el nombre de usuario y la contraseña en ambas situaciones. Los datos se almacenan en el teléfono, cuando desinstala la aplicación, los datos que algunos también se perderán. El usuario deberá volver a ingresar esta información.

Puede guardar el nombre de usuario y pasar las Preferencias compartidas o una base de datos, que es una preferencia personal. Solo asegúrese de bloquear, es decir, no comparta la base de datos ni las preferencias compartidas en las que guarda esta información.

En cuanto a la diferencia ... las preferencias compartidas deberían ser válidas ... las preferencias compartidas ... aquí es un ejemplo:

Si creo una opción para cambiar el color de fondo, almacenaré todas las opciones disponibles en un DB que se puede cargar en una vista de adaptador para que el usuario pueda elegir. Pero almacenaré el color que han seleccionado en las Preferencias compartidas. De esta forma, cuando la carga de la aplicación puedo obtener el valor de Preferencia Compartida del color de fondo que se debe usar.

3

SharedPreferences se utiliza para eso, almacenando las preferencias del usuario compartidas en toda la aplicación. Puede usarlo, por ejemplo, para almacenar el nombre de usuario de un usuario, o quizás algunas de las opciones que él o ella ha configurado en su aplicación en la que desea recordar.

SQLite es una base de datos relacional . Se usa para almacenar los datos de su aplicación, no las preferencias o la información de configuración.

Ambos se almacenan localmente en el dispositivo.

+0

Entonces, ¿qué usamos para asegurarnos de tener un nombre de usuario y contraseña incluso después de que el usuario desinstala la aplicación? – NoviceMe

+0

utiliza un servidor web al que tu aplicación se conecta y guarda los datos allí. –

2

1.SharedPreferences almacena solo Boolean, int, float, long, Cadena de cinco tipos de tipos de datos simples, como no puede ser consulta condicional. Por lo tanto, si la operación de almacenamiento de datos SharedPreferences es lo simple que solo puede ser un suplemento de almacenamiento, pero no puede reemplazar por completo otros datos, como la base de datos SQLite se almacena.

2.Preferencias compartidas basadas en el archivo XML para almacenar la clave de valor-clave utilizada para almacenar la información de configuración (principalmente la preferencia del usuario para su aplicación).

3.Sharedprefrece al igual que cookies en la web que almacena cierta información básica en el lado del cliente.