我有一个问题,我认为这不是针对特定的平台或语言,而是针对该问题,可以与Java(以及适用于DB的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(用户数据可以在此处更新),第二是Trivia问题屏幕,两个片段可以同时存在于内存中,即使一个片段在另一个之上也意味着它们都具有一个用户对象,但引用不同。
让我们说用户正在回答琐事问题,并且分数/等级(示例中未显示的其他属性)会增加/更新。
更新数据库的正确方法是什么?问题是,如果对象是从屏幕1更新的,屏幕2对此一无所知,然后再将来自屏幕2的对象保存到db,这将覆盖先前从屏幕1更新的旧值的数据。>
我认为可以解决此问题的选项: 为每个属性创建更新功能
但是由于我有多个模型,所以可以轻松地将其扩展为大量的更新功能。
对此问题有何建议?也许我应该以不同的方式管理数据? 我了解Android LiveData,这在与Room一起使用时会很有帮助,但是有解决此问题的其他方法吗?
*该示例不是真实的,我的应用程序具有更多的屏幕和模型,实际上可以在内存中使用相同的对象并具有不同的引用。