最近我正在探索谷歌最近推出的Android架构。从
Documentation我发现了这个:
public class MyViewModel extends ViewModel {
private MutableLiveData> users;
public LiveData> getUsers() {
if (users == null) {
users = new MutableLiveData>();
loadUsers();
}
return users;
}
private void loadUsers() {
// do async operation to fetch users
}
}
活动可以按如下方式访问此列表:
public class MyActivity extends AppCompatActivity {
public void onCreate(Bundle savedInstanceState) {
MyViewModel model = ViewModelProviders.of(this).get(MyViewModel.class);
model.getUsers().observe(this, users -> {
// update UI
});
}
}
我的问题是,在loadUsers()函数中我异步获取数据,我将首先检查数据库(Room)中的数据,如果我没有获取数据,我将进行API调用以从中获取数据网络服务器。然后我将获取的数据插入数据库(Room)并根据数据更新UI。建议的方法是什么?
如果我启动服务从loadUsers()方法调用API,我该如何更新MutableLiveData< List< User>>用户来自该服务的变量?