android - 使用 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”
解决方案
推荐阅读
- python - 如何将 mnist fom RGB 之类的数据集转换为灰度
- java - JavaFX NullPointerExcepion @ FXMLLoader.load(...) (URL 为空)
- java - Flink Kryo 序列化器,因为找不到 Chill 序列化器
- ios - Cocoapods 完成自定义前缀头文件,使用 prefix_header_file 只追加到默认内容
- python - 如何在 matplotlib 小部件的嵌入式图形上使用跨度选择器?
- arrays - 在 Kotlin 中使用带有 JSONArray 的 contains 方法进行类型推断失败
- python - pybind11 - 包装重载赋值运算符?
- c++ - 将数字文件读入向量
- android - 使用 Flutter Share 分享本地拍摄的图片
- c# - Unity 的 Universal Render Pipeline 性能问题?(2D)