I am using MVVM for my application. I want to get context in my viewmodel or in repository in better way.
Let's pretend I have UserRepository() class
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();
    }
}
I know using MApplication.context is not a good approach. This is memory leak.
What's another way to to get context ?
Note: I am not using Dagger2
 
    