Я наткнулся на GSON и почти влюбился в него. Это казалось очень простым способом мгновенного сохранения объектов и всех переменных, содержащихся в них, через общие настройки или внутреннее хранилище.
Проблема в том, что, когда мои данные успешно сохраняются при закрытии и открытии приложения, когда я перезагружаю телефон, общее предпочтение / внутреннее хранилище больше не загружает данные. Они все еще там, но данные, которые они хранят, равны нулю.
Например, я смог сохранить это без проблем
fun save() {
getPreferences(0).edit().putString("name", Object.name.toString()).apply()
}
fun load(){
Object.name = JSONArray(getPreferences(0).getString("name", Object.name)
}
Но любая попытка сделать то же самое с помощью преобразования GSON не давала того же результата после перезагрузки телефона. Данные сохраняются без проблем, когда я просто открываю и закрываю приложение.
fun save(){
getPreferences(0).edit().putString("Object", Gson().toJson(Object)).commit()
}
fun load(){
var copiedObject = Gson().fromJson(getPreferences(0).getString("Object", Gson().toJson(Object)), Object.javaClass)
Object.name = copiedObject.name
}
Я не уверен, что это из-за того, что я неправильно написал код для метода сохранения данных GSON. Если это так, то приложение не сможет сохранить данные, закрыв и открыв приложение в одиночку.
Возможно, если это поможет решить эту проблему, у меня Object хранится в отдельном файле .kt в моем приложении.