【发布时间】:2019-02-17 22:45:31
【问题描述】:
我正在为我的应用程序使用 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
【问题讨论】:
-
见
android.arch.lifecycle.AndroidViewModel -
我认为 AndroidViewModel 是更好的解决方案。谢谢@pskink
-
使用AndroidViewModel developer.android.com/reference/android/arch/lifecycle/…