最近,我正在探索Google最近引入的Android体系结构。从文档中我发现:
public class MyViewModel extends ViewModel {
private MutableLiveData<List<User>> users;
public LiveData<List<User>> getUsers() {
if (users == null) {
users = new MutableLiveData<List<Users>>();
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()
函数中,我异步获取数据,在该处我将首先检查数据库(房间)中的数据如果没有收到数据,我将进行API调用以从Web服务器获取数据。
我将获取的数据插入数据库(Room)并根据数据更新UI。
推荐的方法是什么?
如果我开始Service
从loadUsers()
方法中调用API,该如何从中更新MutableLiveData<List<User>> users
变量Service
?