我一直在阅读有关Android引入的新架构组件的信息,但我无法弄清楚其工作原理:
ViewModelProviders.of(Activity).get(Class)
Run Code Online (Sandbox Code Playgroud)
最初,我认为它调用默认构造函数并返回一个ViewModel对象,然后使用该对象实例化。一个init()方法
public class UserProfileViewModel extends ViewModel {
private String userId;
private User user;
public void init(String userId) {
this.userId = userId;
}
public User getUser() {
return user;
}
}
Run Code Online (Sandbox Code Playgroud)
摘录自指南:https : //developer.android.com/topic/libraries/architecture/guide.html
但是,在指南的后面有以下代码段:
public class UserProfileViewModel extends ViewModel {
private LiveData<User> user;
private UserRepository userRepo;
@Inject // UserRepository parameter is provided by Dagger 2
public UserProfileViewModel(UserRepository userRepo) {
this.userRepo = userRepo;
}
public void init(String userId) {
if (this.user != null) {
// ViewModel is created …Run Code Online (Sandbox Code Playgroud)