小编Nik*_*hev的帖子

体系结构组件:ViewModelProvider如何知道要调用哪个构造函数?

我一直在阅读有关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)

java lifecycle android

3
推荐指数
1
解决办法
1903
查看次数

标签 统计

android ×1

java ×1

lifecycle ×1