架构组件 为 UI controller 提供 ViewModel 助手类,它的责任是为 UI 准备数据。 ViewModel 对象在 配置改变的时候自动保存数据示例,从而它保存的数据能被下一个 activity 或者 fragment 实例立即重用。 例如,如果你需要展示一个 user 列表,确保将责任分配给 ViewModel(用于保存 user list),实例化一个 Activity 或者 fragment。如下所示:
publicclassMyViewModelextendsViewModel{privateMutableLiveData<List<User>> users;publicLiveData<List<User>>getUsers(){if(users ==null){ users =newMutableLiveData<List<User>>();loadUsers();}return users;}privatevoidloadUsers(){ // Do an asynchronous operation to fetch users.}}
public class MyActivity extends AppCompatActivity {
public void onCreate(Bundle savedInstanceState) {
// Create a ViewModel the first time the system calls an activity's onCreate() method.
// Re-created activities receive the same MyViewModel instance created by the first activity.
MyViewModel model = ViewModelProviders.of(this).get(MyViewModel.class);
model.getUsers().observe(this, users -> {
// update UI
});
}
}