2013-10-02 14 views
18

Jak szybko są SharedPreferences? Czy istnieje sposób, aby umieścić je w pamięci do czytania? Mam niewielką ilość danych, które ListView musi wysłać, aby wyświetlić każdą komórkę, i obawiam się, że wywołanie pamięci flash będzie zbyt wolne. Nie martwię się szybkością zapisu, ponieważ zapisy zdarzają się nieczęsto. Zastanawiam się tylko przy użyciu obiektu JSON do utrzymywania danych zamiast SharedPreferences. Myśli?Szybkość odczytu SharedPreferences

+0

SharedPreferences to zasadniczo plik xml znajdujący się w pamięci podręcznej aplikacji "sandbox". Można uzyskać do niego dostęp i przeglądać przez ADB. – hakanostrom

Odpowiedz

35

Czy istnieje sposób na zapisanie ich w pamięci do czytania?

Są w pamięci po pierwszym odwołaniu. Po pierwszym pobraniu określonego SharedPreferences (np. PreferenceManager.getDefaultSharedPreferences()) dane są ładowane z dysku i przechowywane.

+2

mówisz, że wszystkie zapisane dane w 'SharedPreferences' zostaną załadowane, gdy pojawi się instancja' PreferenceManager.getDefaultSharedPreferences() '??? –

+6

@MoshErsan: Tak. 'SharedPreferences' jest trzymany w statycznej' HashMap' 'SharedPreferences' w' ContextImpl'. Pozostanie tam do czasu zakończenia procesu. Zobacz 'sSharedPrefs' w https://github.com/android/platform_frameworks_base/blob/master/core/java/android/app/ContextImpl.java – CommonsWare

+1

jaka jest korzyść z robienia tego w ten sposób? !! –

-1

Mam małą ilość danych, które ma do ListView zapytanie do wyświetlaczu każdy komórek

nie można zrobić Singleton wspólną klasę i stąd go od raz drugi? Zrobiłbym to.

+0

Nie ma potrzeby zwiększania współużytkowanego stanu globalnego za pośrednictwem Singleton. Android ma już rozwiązania do globalnego zarządzania stanami za pośrednictwem 'SharedPreferences' oraz' Bundles'. Wystarczy. Powinieneś całkowicie wyeliminować stan globalny –

13

Moja rada to najpierw przetestować wydajność, a następnie zacząć martwić się prędkością. Ogólnie rzecz biorąc, będziesz bardziej zadowolony z aplikacji, która nadaje priorytet łatwości konserwacji i szybkości. Gdy inżynierowie zaczynają osiągać wydajność, zanim uzyskają stabilną aplikację, wynikiem jest aplikacja działająca nieco szybciej, ale ma wiele błędów.