У меня есть вопрос, я думаю, что это не для конкретной платформы или языка, а для вопроса, давайте работать с Java (и Android Room для БД).
Допустим, у нас есть и класс сущности:
public class User {
@Entity
private long id;
private String name;
private int age;
private String profession;
private int scores;
private int level;
//etc...
//getters and setters removed for the example
}
Приложение имеет несколько экранов (фрагментов), один - UserProfile (пользовательские данные могут быть обновлены здесь), а второй - экран вопросов викторины, оба фрагмента могут одновременно существовать в памяти, даже если один над другим это означаету них обоих есть объект User, но с разными ссылками.
Допустим, пользователь отвечает на вопросы о пустяках, а баллы / уровни (другие свойства, которые не показаны в примере) увеличены / обновлены.
Чтоправильный способ обновления БД? Проблема в том, что если объект был обновлен с экрана 1, экран 2 не знает об этом, и позже, если объект с экрана 2 будет сохранен в БД, это заменит данные старыми значениями, которые были обновлены с экрана 1 ранее.
Вариант, который я решил, может решить эту проблему: создать функцию обновления для каждого свойства
Но это может легко привести к очень большому количеству функций обновления, поскольку у меня есть несколько моделей.
Любые предложения поэтот вопрос ? Может быть, я должен управлять данными по-другому? Я знаю об Android LiveData, и это может очень помочь при использовании с Room, но есть ли другой способ решить эту проблему?
* Пример не реален, и у моего приложения гораздо больше экранов и моделей, и он действительно можетиметь одинаковые объекты с разными ссылками в памяти.