首页 > 解决方案 > 使用 dagger android 时如何在通知上创建 viewmodel 的实例

问题描述

我在我的 Android 应用程序中使用带有匕首的 MVVM。我已将我的 Activity 附加到一个 ViewModel 中,我在其中调用 API,它运行良好。

如果我在后台并且应用程序收到通知并且我想从 ViewModel 调用 API 以实现可重用性但匕首不允许我从 ViewModel 访问相同的 API,我有一个场景。

我能做些什么?我可以使用另一个类或存储库,并从通知或 ViewModel 调用该实例吗?

谢谢

我的视图模型代码:

public class HomeViewModel extends BaseViewModel {

private static final String TAG = "HomeViewModelTimber";

@Inject
MainApi mainApi;

@Inject
RequestManager requestManager;

@Inject
AlertRepository alertRepository;

@Inject
HomeViewModel(MainApi mainApi, SessionManager sessionManager, CompositeDisposable compositeDisposable,
              SchedulerProvider schedulerProvider,
              AlertRepository alertRepository) {
    super(sessionManager,compositeDisposable,schedulerProvider);
    this.mainApi = mainApi;
    this.alertRepository = alertRepository;

}
 void getAlertById(int alertId, IHome iHome){
    mainApi.getAlertById(getSessionManager().getJwtToken(), alertId)
            .subscribeOn(getSchedulerProvider().io())
            .doOnSubscribe(disposable -> Timber.tag(TAG).i(" getAlertById %s", Constants.SUBSCRIBE))
            .doOnComplete(() -> Timber.tag(TAG).i(" getAlertById %s", Constants.COMPLETE))
            .doOnError(disposable -> Timber.tag(TAG).i(" getAlertById %s", Constants.ERROR))
            .observeOn(getSchedulerProvider().ui())
            .subscribe(getAlertById -> {
                if (getAlertById != null){
                    if (getAlertById.getPayLoad() == null) {
                        return;
                    }

                    PayLoad payLoad = getAlertById.getPayLoad();

                    if (payLoad.getFolder() == null) {
                        return;
                    }
                   }});

我想从通知中访问“getAlertById”

标签: androidmvvmnotificationsdagger-2dagger

解决方案


推荐阅读