2010-07-08 22 views
9

Rozwinąłem grę na Androida. Aktualnie zapisuję większość statystyk gry w bazie danych. Jednak aplikacja nie wykorzystuje więcej niż jednego wiersza w DB. Teraz jestem zainteresowany wprowadzeniem nowych statystyk, ale spowoduje to ponowne zainstalowanie bazy danych i oczyszczenie postępów wszystkich użytkowników. Aby tego uniknąć w przyszłości, rozważam przechowywanie statystyk gry w SharedPreferences. Moje pytanie brzmi: ile różnych rzeczy można przechowywać w ten sposób, zanim stanie się problemem. W sumie chciałbym przechowywać około 40 wartości, wszystkie liczby całkowite.Ograniczenia Android SharedPreferences?

+0

40 liczb całkowitych wystarcza do przechowywania w SharedPreferences –

Odpowiedz

18

Obiekty SharedPreferences są zapisywane w plikach xml, więc maksymalny rozmiar pliku na systemie Android jest taki, jak duży może być plik XML SharedPreferences. Mogę śmiało powiedzieć, że 40 liczb całkowitych nie będzie problemem.

Maksymalny rozmiar wartości w pliku SharedPreferences jest ograniczony do maksymalnego rozmiaru wartości, którą próbujesz zapisać. (Oznacza to, że nie można wstawić wartości String, która jest dłuższa niż ciągi znaków w języku Java.)

Jedyne, co sugerowałbym, to upewnić się, że wszystkie edycje są grupowane tak często, jak to możliwe (co oznacza, że ​​nie każda zmiana to .commit()), a także nie twórz nowego edytora dla każdej zmiany. (To tylko dobre praktyki.)

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(); 
+3

"dłużej niż łańcuchy mogą być w Javie" - łańcuchy mogą mieć 2^31 - 1 = 2 miliardy znaków. Cóż, to może polegać na wewnętrznej pamięci telefonu. –

7

Nie wiem o żadnych ograniczeniach, ale o twoim problemie z likwidacją każdego postępu. Możesz zastąpić metodę onUpgrade w swojej klasie SQLite, a następnie przenieść dane everyones do nowszej bazy danych.

+2

Dokładnie. Zobacz przykłady notatnika - możesz użyć ALTER TABLE, aby dodać nowe kolumny. Możesz też dodać zupełnie nową tabelę. Możesz przejść do SharedPreferences, ale ponieważ już wybrałeś podejście bazodanowe, możesz równie dobrze się z nim uporać. – EboMike

+0

Myślę, że mam zamiar wypróbować model SharedPreferences i zobaczyć, które lubię bardziej. Zatrzymam DB, ponieważ w pewnym momencie mam zamiar pozwolić na wiele zapisanych gier. Dzięki za podpowiedź na temat Alter Table, pomogę mi w migracji do SharedPreferences i zachowaniu wszystkich postępów. – Tim

Powiązane problemy