Выполнять обновление только для определенных полей - PullRequest
0 голосов
/ 11 октября 2019

У меня есть вопрос, я думаю, что это не для конкретной платформы или языка, а для вопроса, давайте работать с 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, но есть ли другой способ решить эту проблему?

* Пример не реален, и у моего приложения гораздо больше экранов и моделей, и он действительно можетиметь одинаковые объекты с разными ссылками в памяти.

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