Android: использование SharedPreference вызывает утечку памяти - PullRequest
0 голосов
/ 24 ноября 2011

Наше приложение использует SharedPreference для сохранения данных. Приложение получает около 1,5 Мб данных с сервера.

После анализа данных я сохраняю их в SharedPreference. Но операция сохранения вызывает около 2 Мб Hashmaps в куче (я проверил с помощью инструмента анализатора памяти). Так использует ли sharedPrefs кучу (я так не думаю) или внутренне при хранении, разве Редактор не очищает строки данных объекта карты? (В анализаторе памяти данные отображаются в виде HashMap с корнем GC для SharedPrefs и android.app.ContextImpl (внутренний или внутренний класс в Android))

Кроме того, как лучше использовать sqlite или SharedPref? Потому что с sharedPref приложение работает быстро и нормально. Моя единственная проблема - это утечка памяти.

1 Ответ

0 голосов
/ 24 ноября 2011

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

Однако, если у вас много записей, я думаю, лучше всего использовать базу данных.

Приведенный ниже код сохранит строку в файл:

    public static void WriteSettings(Context context, String data,String filename) {
    FileOutputStream fOut = null;
    OutputStreamWriter osw = null;
    try {
        fOut = context.openFileOutput(filename, Context.MODE_PRIVATE);
        osw = new OutputStreamWriter(fOut);
        osw.write(data);
        osw.flush();
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            osw.close();
            fOut.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...