问题标签 [mosby]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
189 浏览

android - 使用带有 Mosby 的 MVI 更新视图

我正在使用Mosby库和 MVI,如下所述:http: //hannesdorfmann.com/android/mosby3-mvi-1

我的问题是关于如何连接 Presenter 以呈现模型,如果模型是从“业务逻辑”层接收的,但不是直接响应其视图中的 Intent。

例如,PresenterA 从 ViewA 接收到一个意图,将其转发给业务逻辑,然后业务逻辑需要向 PresenterA 和 PresenterB 发送更新的状态(用于在 ViewA 和 ViewB 中呈现)。

但是,由于意图起源于 ViewA(而不是 ViewB),应该如何配置 PresenterB(在 中bindIntents())以呈现该新状态?

我尝试让业务层公开BehaviorSubject演示者会观察到的一个:

但是每当被调用时,该主题的订阅者数量就会增加onNext,这让我很担心。

0 投票
2 回答
171 浏览

android - 暂停后如何保存视图的状态?

当我的应用程序完成一些异步任务时,它会通知 UI。

例如:

  1. 用户单击我的应用程序内的“开始工作”按钮-> async work started
  2. 并切换到另一个应用程序-> state is saved
  3. 然后我的应用程序中的“工作”完成并更新了 View-s -> async work finished (请注意我的活动已暂停)
  4. 用户旋转手机,然后导航回我的应用
  5. 问题: state is restored工作完成后,视图在 3 步中更新的状态消失了!

如何处理此类情况?应用暂停后有什么方法可以保存设置吗?

0 投票
1 回答
61 浏览

android - 如何使用 Mosby 将演示者附加到派生控件(视图)?

否则,我在我的应用程序中使用 Mosby 是成功的。我现在想将演示者添加到NavigationView控件中。我已经重写了控件以封装类似于视图的内容,例如添加菜单项和动态显示的子控件。

我现在想将所有演示者的代码从MainActivity.java一个NavigationDrawerPresenter类中移动,并且我想使用 Mosby。

我已经阅读了 Mosby 文档,但没有看到它在哪里解释了如何将演示者附加到我从位于 Activity 布局深处的 SDK 扩展的 View 控件上。我收集到我可以直接使用 ViewGroupMvpDelegateImpl 并手动将所有生命周期事件从视图委托给委托。(这是正确的方法吗?)

在 的情况下NavigationView,这是有问题的。

NavigationView继承自ScrimInsetsFrameLayout。它不允许我们覆盖onAttachedToWindowonDetachedFromWindow。它回应:

ScrimInsetsFrameLayout.onAttachedToWindow can only be called from within the same library group (groupId=com.android.support)

这似乎是莫斯比的一个亮点。如果没有这个覆盖,我不知道如何将 Mosby 的委托附加到生命周期事件。

如何将演示者附加到从 Android SDK 扩展的视图?

0 投票
1 回答
32 浏览

android - 旋转后如何恢复跑步动画

我有一些视图状态,例如StartingGameGameStarted。如果用户开始游戏,我会一个接一个地发出两种状态,并在第一个事件中开始一个进度,如下所示:

旋转后,我的视图状态说,它已经处理了动画的开始,所以动画没有显示。

我怎么能以 mvi 的方式解决这个问题?

我真的应该通过 mvi 状态流发出所有这些事件,并增加每个事件的状态进度并在那里更新视图吗?

0 投票
0 回答
71 浏览

android - 在 MVI 中处理组件终止意图的最佳方法

我是 MVI 模式的忠实粉丝,我最近在我的一个 android 项目中使用 mosby 实现了该模式。有一个问题到目前为止我还没有想出最好的方法是如何处理它。这是关于完成意图,例如。一个“保存并完成活动/片段”意图,这将由后按触发,其中组件在用户操作后立即终止,但在此之前需要在交互器中完成某些操作。我通过观察和保存交互器(意图由 PublishSubject 触发,在 onBackPressed 中触发)并返回(不相关的)视图状态来尝试它。但似乎组件和可观察链被杀死太快,没有调用交互器中的保存方法。所以它在某种程度上需要是一个阻塞的可观察意图。任何建议如何处理?

0 投票
1 回答
33 浏览

mosby - 如何将 mosby MVP 结构添加到对话框中?

我正在尝试编写一些涉及复杂服务器调用的对话框。

因此,如果我可以直接在 Dialog 文件中添加一些 MVP 内容,我会发现它会更容易。

但是,似乎没有 MvpDialog。

我可以做哪些替代方案?

0 投票
1 回答
87 浏览

rx-java2 - 如何确保在 RxJava2 中发出第二个 Observable 之前订阅第一个 Observable?

阅读了Hannes Dorfmann 撰写的文章MODEL-VIEW-INTENT后,我使用 MVI 模式设计了我的应用程序。

这是我的应用程序的设计图。设计图

我有两个可重用的片段,BarFragment 和 ContentFragment。我的活动是由这两个片段组成的。

数据流为:

第 1 步:changeKeywordIntent() 方法从 BarFragment 的搜索视图中收集用户输入。

第 2 步:要重用片段,不直接通过 render() 方法订阅意图。

收到意图后,演示者首先向 partialViewStateSubject 发出 PartialViewState.ChangeKeyword(keyword) 对象。这个部分视图状态将被简化为 ViewState,然后被所有 MvpView 的 render() 方法使用。IE,视图将在适当的位置显示该关键字。

这就像一个广播。

在渲染 PartialViewState.ChangeKeyword(keyword) 对象后,演示者调用业务逻辑,然后发出 PartialViewState.ContentFirstPage(response.body()) 以 PartialViewState.Loading() 对象开始。

我的问题是在这一步中,调用哪个 RxJava2 方法可以确保在第二个 observable 发出之前,第一个 observable 被订阅?以及创建第二个 observable 的方法是什么?

第三步:当接收到PartialViewState对象时,将其缩减为ViewState对象,并将ViewState对象推送给viewStateSubject。关键代码是

第 4 步:所有演示者在 bindIntents() 方法中订阅 viewStateSubject

第五步:渲染viewState对象,本题代码可以跳过。

所以我的问题是在第 2 步中,有人可以用 RxJava2 帮助我处理该代码吗?谢谢你。

0 投票
1 回答
44 浏览

mosby - 如何避免每次在片段开始时触发 loadIntent()

使用 mosby-mvi 时,

以下代码工作正常 - 创建片段时仅触发一次。

以下代码出乎意料 - 每次活动从后台唤醒时都会触发。

这是为什么?