Как сохранить hashmap, чтобы он мог сохранить его значение после перезагрузки устройства? - PullRequest
2 голосов
/ 10 февраля 2011

Я хочу сохранить объект hashmap в глобальном классе, чтобы он сохранял значение даже после перезагрузки мобильного устройства.Любая идея, как обойти эту концепцию.

Ответы [ 3 ]

7 голосов
/ 10 февраля 2011

сериализует ваш объект hashmap перед перезапуском и десериализует его после перезапуска ...

вот пример кода для сериализации ..

public void serializeMap(HashMap<String,String> hm) {
    try {
        FileOutputStream fStream = openFileOutput(namefile.bin, Context.MODE_PRIVATE) ;
        ObjectOutputStream oStream = new ObjectOutputStream(fStream);

        oStream.writeObject(hm);        
        oStream.flush();
        oStream.close();

        Log.v("Serialization success", "Success");
    } catch (Exception e) {
        Log.v("IO Exception", e.getMessage());
    }
}   

Вы также можете прочитать его, десериализовав его ....
Спасибо ....

5 голосов
/ 10 февраля 2011

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

  SharedPreferences preferences = getSharedPreferences(
                PREF_FILE_NAME, MODE_PRIVATE);
        if (value.equals("")) {

            boolean storedPreference = preferences.contains(key);
            if (storedPreference) {
                SharedPreferences.Editor editor = preferences.edit();
                editor.remove(key); // value to store
                Log.d("KEY",key);
                editor.commit();
            }
        }else{

            SharedPreferences.Editor editor = preferences.edit();
            editor.putString(key, value); // value to store
            Log.d("KEY",key);
            editor.commit();
        }

тогда мы можем получить доступ с помощью

SharedPreferences preferences = getSharedPreferences(
                PREF_FILE_NAME, MODE_PRIVATE);
        Map<String, String> map = (Map<String, String>) preferences.getAll();
        if(!map.isEmpty()){
            Iterator<Entry<String, String>> iterator = map.entrySet().iterator();
            while(iterator.hasNext()){
                 Map.Entry pairs = (Map.Entry)iterator.next();
                    pairs.getKey()+pairs.getValue();
                          //write code here
            }
        }
1 голос
/ 10 февраля 2011

Сериализуйте его и сохраните в общих настройках или в файле. Конечно, то, можете ли вы сделать это, зависит от того, с какими типами данных сопоставляются и куда. (Это не будет работать, например, если вы попытаетесь сериализовать View.)

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