Badałem alternatywne metody zapisywania danych z mojej gry między kolejkami i zastanawiam się, czy ktoś może wskazać mi właściwy kierunek.Najlepsza metoda zapisywania danych - preferencje, sqlite, serializowalne lub inne?
Mam około 32k danych, które muszą zostać zapisane w trybie onPause. Wykluczyłem preferencje ze względu na ogromną ilość danych. Spędziłem kilka dni bawiąc się z SQLite, ale nie mogłem zapisać danych w czasie krótszym niż dwie sekundy (chociaż czas z pewnością nie został zmarnowany).
Zdecydowałem, że użyję bazy danych do załadowania stałych danych na początku gry. To z pewnością ułatwi dostrojenie różnych parametrów i wartości domyślnych w grze. Ale to wciąż pozostawia mi poszukiwanie idealnej metody zapisu danych.
Dane, które należy zapisać to zasadniczo dziewięć wystąpień klasy A i dziewięć wystąpień klasy B. Jestem intensywnym miesiącem na krzywej uczenia się Androida (i niuansów Java, pochodzących z tła C++) i szukałem go jak szalonego. Ten przyniósł dwie możliwości umysłu -
1) serializacji (ObjectOutputStream)
myślałem, że to byłoby idealne rozwiązanie, ale po przeczytaniu kilku innych stanowisk dotyczących tematu, gromadzić, że nie jest zalecane na Platforma Android ze względu na szybkość i alokację pamięci, które prowokują śmieciarza do potencjalnego gniewu.
2) Klasa DataOutputStream
Mój obecny myśl jest dodanie wczytywać i zapisywać funkcje obu klas i używać DataOutputStream i DataInputStream wywołuje w nich do zapisu i odczytu danych odpowiednio.
Dane w klasach są prymitywami (głównie ciągi i int) i tablicami prymitywów, więc nie ma nic zbyt skomplikowanego, aby się zepsuć. Czy to drugie rozwiązanie wydaje się dobre, rentowne? Czy są jeszcze inne rozwiązania, których nie jestem jeszcze świadomy?
Najważniejszą kwestią, którą należy wziąć pod uwagę, jest to, że zapis na flash może być długotrwałą operacją, niezależnie od wielkości danych. Nawet zapisanie 1 bajta może zająć zauważalną ilość czasu. Dlatego upewnij się, że twoje rozwiązanie buforuje wszystkie dane i zapisuje je w jak najmniejszej liczbie operacji. – Jems
Dzięki za poradę. Przeszedłem za pomocą metody DataOutputStream, a czas potrzebny do zapisania danych jest teraz znikomy (około 0,1 sekundy). Cieszę się, że udało mi się omijać bazy danych SQLite, ponieważ na pewno będą bardzo przydatne :) – Rok