2012-03-06 16 views
10

So che questo argomento è stato discusso prima su Stack Overflow. Ma ci sono ancora alcune cose che non sono chiare quando leggo i post precedenti su di esso. Quindi sono qui:Differenza tra preferenza condivisa e sqlite

  • So che usiamo preferenza condiviso per i piccoli insiemi di dati e SQLite per la grande manipolazione dei dati, quindi se vogliamo solo per salvare un nome utente e una password dovremmo usare le preferenze condivise?
  • Le preferenze condivise non vanno perse quando l'utente disinstalla l'app? Ad esempio, scarica un'app chiamata abc e salvi il nome utente e la password. Quindi disinstallo questa app da un telefono e provo ad accedervi da un altro telefono usando lo stesso nome utente e password. Questo verrà salvato utilizzando le preferenze condivise o i dati andranno persi?
  • Quali sono il motivo principale per cui vengono utilizzati uno sopra l'altro accanto a set di dati grandi e piccoli?
+0

ho anche una domanda! Voglio memorizzare alcuni dati di stringhe e int che gli utenti li riempiono (voglio memorizzare numeri di articoli illimitati). per favore aiutami quale di loro è meglio per questo caso? Grazie! –

risposta

18

Si può pensare alla differenza tra le preferenze condivise e un database SQLite in termini di dimensioni dei dati, ma ciò non è del tutto preciso. Un modo migliore per pensarlo è in termini di struttura dei dati che si desidera memorizzare.

Le preferenze condivise possono solo memorizzare coppie di valori-chiave mentre un database SQLite è molto più flessibile. Quindi le preferenze condivise sono particolarmente utili per memorizzare le preferenze dell'utente, ad es. se l'app visualizza notifiche ecc. Mentre un database SQLite è utile per qualsiasi cosa.

Entrambe le origini dati sono locali, ma è necessario tenere presente che è possibile eseguire il backup dei dati dell'applicazione nell'archivio cloud collegato all'account Google dell'utente. Ciò rende molto più semplice per i tuoi utenti il ​​cambio dei dispositivi e il trasferimento delle loro applicazioni sul nuovo dispositivo. Per maggiori informazioni dai un'occhiata a here.

1

entrambi memorizzano i propri dati localmente, quindi disinstallando l'app verranno eliminati entrambi. a parte questo, SharedPreferences è più facile da programmare e hai ragione riguardo agli importi dei dati.

+0

Quindi, anche con sqlite non riuscirò a salvare i dati? Come si salvano i dati allora? Qual è il punto di utilizzo di questi se non è possibile salvare o recuperare nome utente e password? – NoviceMe

+0

è possibile salvare i dati, a condizione che l'utente non cancelli l'app. Se si desidera che i dati persistano se l'utente elimina e reinstalla l'app, è necessario impostare un server Web. –

0

In generale, è necessario utilizzare le preferenze condivise se si desidera consentire all'utente di manipolare direttamente determinati campi di dati. Le preferenze condivise sono fondamentalmente preferenze dell'utente; se desideri che l'utente riconfiguri l'app per comportarsi in modi diversi, devi esporre tale funzionalità come preferenza condivisa. D'altra parte, il database SQLite dovrebbe essere usato se si vuole limitare la visibilità dei dati solo all'applicazione, se si vuole una maggiore garanzia che i dati siano persistenti e se si desidera che l'applicazione si comporti indipendentemente da ciò che è memorizzato nel database. Naturalmente, è possibile utilizzare entrambi in un'unica applicazione.

Le preferenze condivise e il database fanno parte dei dati locali memorizzati dall'applicazione. Se si disinstalla l'applicazione, entrambi gli archivi dati verranno rimossi.

4

Nella situazione descritta di si perderà il nome utente e la password in entrambe le situazioni. I dati vengono memorizzati sul telefono, quando si disinstalla l'applicazione, i dati che alcuni con esso andranno persi. L'utente dovrà reinserire queste informazioni.

È possibile salvare il nome utente e passare le preferenze condivise o un DB, che è una preferenza personale. Assicurati di bloccare entrambi, cioè non condividere il DB o le preferenze condivise in cui mantieni queste informazioni.

Per quanto riguarda la differenza ... Le preferenze condivise dovrebbero essere valide ... Preferenze condivise ... qui è un esempio:

Se creo un'opzione per modificare il colore di sfondo, memorizzerò tutte le opzioni disponibili in un DB che può essere caricato in una vista adattatore da cui l'utente può scegliere. Ma memorizzerò il colore che hanno selezionato nelle Preferenze condivise. In questo modo quando l'applicazione carica posso ottenere il valore Preferenza condivisa del colore di sfondo che dovrebbe essere usato.

3

SharedPreferences viene utilizzato solo per quello, memorizzando le preferenze utente condivisa a livello di applicazione. Puoi usarlo, ad esempio, per memorizzare il nome utente di un utente, o forse alcune opzioni che lui o lei ha configurato nella tua app in cui vuoi ricordare.

SQLite è un database relazionale. È utilizzato per memorizzare i dati dell'applicazione, non le preferenze o le informazioni di configurazione.

Entrambi sono memorizzati localmente sul dispositivo.

+0

Quindi cosa usiamo per assicurarci di avere username e password anche dopo che l'utente ha disinstallato l'app? – NoviceMe

+0

utilizza un server web a cui la tua app si connette e salva i dati lì. –

2

1.SharedPreferences archivia solo Booleano, int, float, long, String cinque tipi di tipi di dati semplici, ad esempio non possono essere query condizionali. Quindi, se l'operazione di memorizzazione dei dati di SharedPreferences è semplice quanto può essere solo un supplemento di memoria, ma non può sostituire completamente altri dati come il database SQLite è memorizzato.

2.SharedPreferenze basate sul file XML per memorizzare la chiave valore-chiave utilizzata per memorizzare le informazioni di configurazione (principalmente preferenza dell'utente per l'applicazione).

3.Sharedprefrece proprio come cookies nel Web che memorizza alcune informazioni di base sul lato client.