Android: самый эффективный способ сохранить список - PullRequest
1 голос
/ 04 мая 2011

Я пытаюсь создать систему для сохранения списка уровней, которые уже были воспроизведены в моем приложении.

Я использую Editor и SharedPreferences для хранения информации на телефоне.

Но теперь у меня есть список int для сохранения

Я пытался что-то выяснить с помощью

 DataOutputStream out;

        //Size
        int resultSize = results.size();
        out.writeInt(resultSize);

        //All the levels ID
        for (int idx = 0; idx < resultSize; idx++){
            //l().debug("Lvl ID: "+results.get(idx));
            out.writeInt(results.get(idx));
        }

Но тогда я не знаю, как сохранить это в общих настройках.

Меня также беспокоит размер, этот список идентификаторов может стать очень большим, поэтому я хочу оптимизировать хранимое количество (следовательно, DataStream)

любые идеи

Jason

Ответы [ 4 ]

1 голос
/ 04 мая 2011

Вы можете перебрать свой список и создать строку с разделителями-запятыми из целых.Например, "1,2,15..etc", затем просто напишите эту строку в SharedPreferences.Вам, очевидно, придется пометить его токеном, когда вы прочитаете его обратно.

0 голосов
/ 04 мая 2011

Двоичный поток - это самый эффективный способ сохранения целых чисел.Если у вас действительно много чисел (мегабайт), используйте DataOutputStream в сочетании с ZipOutputStream.

0 голосов
/ 04 мая 2011

Не думаю, что вам нужен самый эффективный способ. Эти данные малы, идти с тем, что вы знаете. Выберите что-то простое и понятное, что-то легко отлаживать.

Плоский файл с каждым уровнем int на новой строке. Вы не можете стать намного проще, чем это. Конечно, это больше, чем самый эффективный способ, но его гораздо легче восстановить из поврежденных файлов, гораздо легче отладить.

0 голосов
/ 04 мая 2011

Насколько велика "действительно большая" точно?Учитывая, что это список уровней, сыгранных человеком, я собираюсь утверждать, что он «мал» для того, что может выдержать смартфон.Хотя лично я бы порекомендовал перейти в таблицу «завершенных» уровней SQLite для упрощения запроса информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...