1

Я пытаюсь сохранить объект DataSnapshot Firebase для sharedpreferences. Почему ты спрашиваешь?Как сохранить объект DataSnapshot Firebase для общих настроек?

См. this post, в котором я разработал хитрый (?) План, который включает в себя выполнение этого.

...

То, что я пытался до сих пор:

1) Использование Gson.Json method. РЕЗУЛЬТАТ: Кажется, не работает ... Я не думаю, что класс DataSnapshot является классом типа POJO ... по крайней мере, не тот, который будет работать с gson.

2) С помощью этого метода:

private static String toString(Serializable o) throws IOException { 
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    ObjectOutputStream oos = new ObjectOutputStream(baos); 
    oos.writeObject(o); 
    oos.close(); 
    return Base64.getEncoder().encodeToString(baos.toByteArray()); 
} 

РЕЗУЛЬТАТ: Не работает ... Я не думаю, что класс DataSnapshot является "Сериализуемый.

Я думал о другом методе - просто сохраните DataSnapshot.toString() в Sharedpreferences ... но тогда как вы его снова получите? Вы не можете сделать:

DataSnapshot snapshot = new DataSnapshot().fromString([string from sharedprefs]) 

Кто-нибудь знает, как это сделать?

Thankyou!

+0

Вы не должны сохранить большие куски ** данных ** в sharedpreferences –

+0

Как вы знаете, насколько он велик, вы видели мою базу данных? Насколько велика большая? –

+0

это плохой подход к хранению datasnapshot в общих предпочтениях, и это технически не является физбельным –

ответ

1

Я столкнулся с той же проблемой. Я хотел сохранить Datasnapshot внутри SharedPreferences, и мои данные json были немного сложны. Поэтому я написал ниже код.

// Чтобы сохранить sharedpreference

public void setAppLanguageDataSnapshot(DataSnapshot mDataSnapshot) { 
    ObjectMapper mapper = new ObjectMapper(); 
    try { 
     mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY); 
     String json = mapper.writeValueAsString(mDataSnapshot.getValue()); 
     StorageUtils.getInstance(context).setString(AppConstants.SharedPrefConstants.APP_CONTENT, json); 
    } catch (JsonProcessingException e) { 
     e.printStackTrace(); 
    } 
    } 

// Чтобы получить данные в виде объекта JSON.

String data = StorageUtils.getInstance(context).getString(AppConstants.SharedPrefConstants.APP_CONTENT); 
    String value = ""; 
    if (!TextUtils.isEmpty(data)) { 
     try { 
      JSONObject jsonObject = new JSONObject(data); 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^