Domanda

Ho sviluppato un gioco su Android. Attualmente sto salvando la maggior parte delle statistiche di gioco in un database. Tuttavia l'applicazione non utilizza più di una singola riga nel DB. Ora sono interessati ad introdurre alcune nuove statistiche, ma questo farà sì che il mio DB di reinstallare e quindi cancellare il progresso di tutti. Al fine di evitare questo in futuro sto considerando la memorizzazione delle statistiche di gioco con SharedPreferences invece. La mia domanda è come molte cose diverse possono essere memorizzati in questo modo prima che diventi un problema. In totale sarei la memorizzazione di circa 40 valori, tutti gli interi.

È stato utile?

Soluzione

SharedPreferences sono scritti in file XML, quindi la dimensione massima di un file su Android è come file di grandi SharedPreferences un XML può essere. Posso tranquillamente dire che 40 valori interi non sarà un problema.

La dimensione massima di un valore in un file SharedPreferences è limitata alla dimensione massima del valore che si sta tentando di memorizzare. (Nel senso che non si può mettere un valore stringa che è più lungo di stringhe possono essere in Java.)

L'unica cosa che vorrei suggerire è fare in modo batch le modifiche, per quanto possibile (significato non .commit() ogni cambio) e non creare un nuovo editor per ogni modifica. (Questi sono solo buone pratiche.)

SharedPreferences settings = getSharedPreferences(PREFS_FILE_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putInt("firstValue", mFirst);
editor.putInt("secondValue", mSecond);
editor.putInt("thirdValue", mThird);

// Commit the edits! (As infrequently as possible)
editor.commit();

Altri suggerimenti

Non so circa eventuali limiti, ma per quanto riguarda il problema con tutti quanti progressi spazzati via. È possibile eseguire l'override del metodo ONUPGRADE nella classe SQLite e quindi i dati di tutti quanti migrare al database più recente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top