最佳答案
最近我正在研究 Android 架构,这是 Google 最近推出的。从 文件中我发现:
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()
函数中,我异步获取数据,首先检查数据库(Room)中的数据
如果我没有得到那里的数据,我会做一个 API 调用,以获取数据从网络服务器。
我将插入获取的数据到数据库(房间) ,并根据数据更新用户界面。
这样做的推荐方法是什么?
如果我启动一个 Service
从 loadUsers()
方法调用 API,我如何更新该 Service
的 MutableLiveData<List<User>> users
变量?