如何在视图模型中获取上下文



我正在为我的应用程序使用 MVVM。我想以更好的方式在我的视图模型或存储库中获取上下文。

让我们假设我有UserRepository((类

public class UserRepository {
UserDao userDao;
Executor executor;
public UserRepository() {
this.userDao = AppDatabase.getAppDatabase(MApplication.context).userDao();
executor = Executors.newSingleThreadExecutor();
}
public void clearUserCached() {
executor.execute(() -> {
userDao.deleteAll();
});
}
public void loginUser(String email, String password) {
getAPIService().login(new LoginRequest(email, password))
.compose(RxUtils.applySchedulers())
.subscribe(
(LoginResponse response) -> {
executor.execute(() -> {
userDao.insert(response.getUser());
});
},
(Throwable e) -> {
e.printStackTrace();
}
);
}
public LiveData<User> getUser() {
return userDao.getUser();
}
}

我知道使用MApplication.context不是一个好方法。这是内存泄漏。

获取上下文的另一种方法是什么?

注意:我没有使用dagger2

在构造函数中,添加一个 Context 参数,然后,当您想要使用此类时,将上下文传递给它,并在 viewModel 中的任何位置使用该上下文。 就像这样:

Context context;
public UserRepository(Context context) {
this.userDao = AppDatabase.getAppDatabase(MApplication.context).userDao();
executor = Executors.newSingleThreadExecutor();
context.this = context;
}

并假设您的主要活动正在使用 UserRepository 类:

UserRepository userRepository = new UserRepository(MatinActivity.this);

然后,您的 UserRepository 类中有上下文,您可以使用它。

相关内容

  • 没有找到相关文章

最新更新