【发布时间】:2018-11-20 12:38:30
【问题描述】:
在 Android 上休息了几年后,我试图了解 Android 架构组件。在阅读了官方文档和一些博客之后,让我感到困惑的一件事是在哪里创建 LiveData 变量。
在下面的第一个变体中,我只在存储库类和第二个变体中创建了一个 livedata 变量 存储库和视图模型类。两种变体都有效。
第一个变体:
public class ScoreViewModel extends AndroidViewModel {
private ScoreRepositorDB scoreRepo;
public ScoreViewModel(Application application) {
super(application);
scoreRepo = new ScoreRepositorDB(application);
}
public LiveData<Score> getScore(){
return scoreRepo.getScore();
}
...
}
第二种变体:
public class ScoreViewModel extends AndroidViewModel {
private ScoreRepositorDB scoreRepo;
private LiveData<Score> score ;
public ScoreViewModel(Application application) {
super(application);
scoreRepo = new ScoreRepositorDB(application);
score = scoreRepo.getScore();
}
public LiveData<Score> getScore(){
// return scoreRepo.getScore();
return score;
}
...
}
两种变体的存储库:
private LiveData<Score> score ;
ScoreRepositorDB(Application application) {
ScoreRoomDatabase db = ScoreRoomDatabase.getDatabase(application);
scoreDao = db.scoreDao();
score = scoreDao.getScore(1);
}
public LiveData<Score> getScore(){
return score;
}
...
在这个例子中,我应该创建:
private LiveData<Score> score ;
在 ViewModel 中?更一般地说,我应该将实例 LiveData/MutableLiveData 变量放在哪里?为什么?
【问题讨论】:
标签: android mvvm android-room android-livedata android-viewmodel