问题标签 [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.
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
,这让我很担心。
android - 暂停后如何保存视图的状态?
当我的应用程序完成一些异步任务时,它会通知 UI。
例如:
- 用户单击我的应用程序内的“开始工作”按钮
-> async work started
- 并切换到另一个应用程序
-> state is saved
- 然后我的应用程序中的“工作”完成并更新了 View-s
-> async work finished
(请注意我的活动已暂停) - 用户旋转手机,然后导航回我的应用
- 问题:
state is restored
工作完成后,视图在 3 步中更新的状态消失了!
如何处理此类情况?应用暂停后有什么方法可以保存设置吗?
android - 如何使用 Mosby 将演示者附加到派生控件(视图)?
否则,我在我的应用程序中使用 Mosby 是成功的。我现在想将演示者添加到NavigationView
控件中。我已经重写了控件以封装类似于视图的内容,例如添加菜单项和动态显示的子控件。
我现在想将所有演示者的代码从MainActivity.java
一个NavigationDrawerPresenter
类中移动,并且我想使用 Mosby。
我已经阅读了 Mosby 文档,但没有看到它在哪里解释了如何将演示者附加到我从位于 Activity 布局深处的 SDK 扩展的 View 控件上。我收集到我可以直接使用 ViewGroupMvpDelegateImpl 并手动将所有生命周期事件从视图委托给委托。(这是正确的方法吗?)
在 的情况下NavigationView
,这是有问题的。
NavigationView
继承自ScrimInsetsFrameLayout
。它不允许我们覆盖onAttachedToWindow
或onDetachedFromWindow
。它回应:
ScrimInsetsFrameLayout.onAttachedToWindow can only be called from within the same library group (groupId=com.android.support)
这似乎是莫斯比的一个亮点。如果没有这个覆盖,我不知道如何将 Mosby 的委托附加到生命周期事件。
如何将演示者附加到从 Android SDK 扩展的视图?
android - 旋转后如何恢复跑步动画
我有一些视图状态,例如StartingGame
和GameStarted
。如果用户开始游戏,我会一个接一个地发出两种状态,并在第一个事件中开始一个进度,如下所示:
旋转后,我的视图状态说,它已经处理了动画的开始,所以动画没有显示。
我怎么能以 mvi 的方式解决这个问题?
我真的应该通过 mvi 状态流发出所有这些事件,并增加每个事件的状态进度并在那里更新视图吗?
android - 在 MVI 中处理组件终止意图的最佳方法
我是 MVI 模式的忠实粉丝,我最近在我的一个 android 项目中使用 mosby 实现了该模式。有一个问题到目前为止我还没有想出最好的方法是如何处理它。这是关于完成意图,例如。一个“保存并完成活动/片段”意图,这将由后按触发,其中组件在用户操作后立即终止,但在此之前需要在交互器中完成某些操作。我通过观察和保存交互器(意图由 PublishSubject 触发,在 onBackPressed 中触发)并返回(不相关的)视图状态来尝试它。但似乎组件和可观察链被杀死太快,没有调用交互器中的保存方法。所以它在某种程度上需要是一个阻塞的可观察意图。任何建议如何处理?
mosby - 如何将 mosby MVP 结构添加到对话框中?
我正在尝试编写一些涉及复杂服务器调用的对话框。
因此,如果我可以直接在 Dialog 文件中添加一些 MVP 内容,我会发现它会更容易。
但是,似乎没有 MvpDialog。
我可以做哪些替代方案?
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 帮助我处理该代码吗?谢谢你。
mosby - 如何避免每次在片段开始时触发 loadIntent()
使用 mosby-mvi 时,
以下代码工作正常 - 创建片段时仅触发一次。
以下代码出乎意料 - 每次活动从后台唤醒时都会触发。
这是为什么?