问题标签 [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 3 MVP - 当返回到后台堆栈中的片段时,总是重新创建演示者
当我们这样做popBackStack
并返回到后栈中的前一个片段时,onViewCreated(View view, Bundle bundle)
由于onSaveInstanceState(Bundle outState)
之前没有调用过,方法中的包始终为空。因此,当我们返回时,bundle 为空,并且再次创建了演示者(和视图状态)。在这种情况下,我们如何重用演示者和视图状态(而不是重新创建它)?
您可以在下面看到一个虚拟示例。有一个带有 2 个按钮的片段。一个按钮打开一个新片段,另一个按钮转到前一个片段。当您返回时,将重新创建演示者和视图状态。这不是我需要的,但我在上面根据库中的代码描述了为什么会发生这种情况。有没有办法确保我们在返回时重用演示者和视图状态?
android - Accessing state outside of reducer function in MVI
In MVI with the Mosby library, what is the best way to access the state outside of the reducer function in the stream? For example, when you need to load the next page for your recycler, you need to know which page was loaded last. (In the sample app the last page is saved in the loader but that defeats the whole purpose of having a single state POJO)
android - Android Ble 客户端应用架构
这更像是一个笼统的问题,而不是一个具体的问题。
基本上我正在开发一个与 Ble 外围设备通信的 Android 应用程序。我使用RxAndroidBle库处理 Ble 通信。至于一般模式,我决定尝试 Mosby MVI,但这并不重要。
到目前为止,我创建了 BluetoothManager 类,该类负责在 Ble 设备上执行所有操作。这个类是一个 Singleton(我知道它在 Android 上不推荐),我使用 Dagger 对其进行了限定,它只注入到那些应该执行一些 Ble 通信的交互器。此类返回带有一些 POJO 的 Observable,这些 POJO 在交互器中转换为 ViewState,然后移到 UI 的更高位置。按照Mosby MVI模式在演示者中订阅。
基本上感谢我将此 Ble 设备视为常规数据源,与某些改造服务或任何数据库相同。只要我执行原子操作,比如写入和读取一些单一特征,那完全没问题。
问题是当我需要启动某种可能需要很长时间的同步时,应该在后台完成,不应该绑定到 UI,但是在某些屏幕上用户应该能够看到进度。在这里,我开始考虑使用 Android 服务并将所有 Ble 通信逻辑放在那里,但是在我看来,使用 Android 服务会破坏任何逻辑分离的尝试,我找不到适合它的好方法。
第三种选择是提供同步服务并为绑定到 UI 的原子操作保留 BluetoothManager,但是我认为这很混乱,如果将所有 Ble 东西放在一个地方,我会很高兴。
我知道这很长,但一切都归结为一个问题 -> 在 Android 上与 Ble 设备通信以保持层分离并使其尽可能独立时,最好遵循的模式是什么。我找不到任何关于处理它的好文章,如果有的话,它们已经过时了,而不是使用 Rx 方法。如果它太笼统,我可以指定更多细节,但我更多的是寻找架构建议而不是代码片段。
android - How can i inject object into presenter in android kotlin MVP mosby app with dagger
I am trying to get dagger working in my application. After creating Module Component and MyApp i can use dagger to inject database service into view but i am having trouble doing same thing with presenter. Code:
Module
Component
AppModule
MainActivity
After injecting estateService this way I can use it, but I cant figure out how do I inject service directly into the presenter. I tried doing it like this but it isn't working. Should I just pass injected objects from the activity? or maybe I should pass MyApp as an argument or make static method allowing my to get it from any place in the application?
java - Java Mosby 片段
如何从 MvpActivity 访问 MvpFragment。
片段,使用当前代码 -
活动是——
android - 方法 onCreate() 未调用
应用程序/build.gradle:
这是我的活动:
onCreate()
我的活动OfferDetailsPdfActivity的方法 是成功调用。
但我需要将参数传递给活动,所以这里的生产代码:
现在在我的活动中方法onCreate()
不是调用,而是方法createPresenter()
被成功调用。有文本“createPresenter:offerId = 0”
从 logcat 可以看出,该方法onCreate()
没有被调用。在 logcat 中没有文本“ onCreate: extras... ”
为什么?
这里logcat:
android - 使用 Mosby 实现非 ViewGroup MVP Android View
我正在尝试使用 Mosby 实现 MVP Android 视图(不是活动或片段),但是当在 Android 适配器中使用该视图并在 onBindViewHolder 中访问它时,此时演示者未初始化。似乎直到 onBindViewHolder 完成后才调用 onAttachWindow,因为演示者为 Null。这是我创建的抽象类。
这是基于 MvpLinearLayout 实现的。我过去使用过另一个名为 Moxy 的 MVP 库,它具有 onCreate 和 onAttachToWindow 的委托方法。
我可以在构造函数中添加一个调用 getMvpDelegate().onAttachWindow 的初始化例程,但这似乎更像是一种黑客攻击。在 onBindViewHolder 和 RecyclerView 中使用时如何使其工作的任何想法?
android - 最小化和恢复应用程序后如何恢复正确的视图状态?
我尝试使用莫斯比。但我有一个问题。
我有活动(视图)、演示者、模型和视图状态。在活动中我有按钮。当我点击按钮时,我从演示者那里调用方法来加载数据:
加载数据的方法调用2个方法:
1.view.showProgress
model.getData()
方法model.getData()
创建ASYNC http 请求(改造)。请求完成后,从视图中比演示者调用方法,view.hideProgress()
.
好的。这个方案运作良好。
但我有一个问题。脚步:
1.点击查看按钮
2.presenter.loadData()
3.在presenter call中view.showProgress()
启动异步http请求
4.最小化应用
5.Activity被破坏
6.作为viewState调用方法saveInstanceState()
保存当前视图状态的结果(显示进度)
7.5秒后网络请求完成,主持人尝试呼叫view.hideProgress()
8.但是活动不存在,结果什么也没发生。
9.用户返回应用程序
作为 viewState 中的结果调用方法
restoreInstanceState()
结果进度再次显示,因为此状态保存在 viewState 上(参见第 6 项)。
问题是必须隐藏进度,因为网络请求在应用程序最小化时成功完成(对用户不可见)。
我该如何解决问题?
android - MVI 架构中的单次事件
尝试新的架构范式,其中演示者创建不可变状态(模型)流并查看只是呈现它。
无法理解如何处理我们只需要一次性制作一些事件的情况。有几个例子。
1)笔记应用程序。我们有editText
和saveButton
。用户点击saveButton
,一些处理发生,editText 应该被清除。你们能描述一下我们ViewState
这里的内容和大致的逻辑流程吗?
我现在看到的问题和陷阱:
- 在presenter订阅
editText.textChanges()
。如果我们text
在ViewState
每次渲染调用中都有并渲染它,那么我们将陷入递归,因为它将发出新的 textChange 并更新状态并再次渲染。 - 我们是否需要
text
在ViewState
方向文本或进程终止/恢复上恢复它,看起来它在这里开箱即用。但是想象一下recyclerView
滚动位置。我们绝对需要保存它才能恢复。我们无法在每次渲染调用时恢复它,因为它看起来很奇怪,不是吗? - 如果我们将这样的逻辑视为副作用并称
.doOnNext{ view.clearText() }
其是有道理的,但我们是否参考了规范 MVI 实现中的视图?正如我所见,莫斯比没有它。 - 这是有道理的,但是在
doOnNext
呼叫的那一刻,视图可能会死掉。MVI 应该帮助我们解决这个问题,但前提是它是 的一部分ViewState
,对吧?
2) Github 应用程序。第一个屏幕(组织):orgEditText
, okButton
, progressBar
. 第二个屏幕(回购)recyclerView
:。当用户进入组织orgEditText
并单击okButton
应用程序时,应向 API 发出请求,并在成功时导航到 Repos 屏幕,或在失败时显示 toast。您能否再次描述ViewState
一下 Org 屏幕以及应该是什么样的逻辑?
我现在看到的问题和陷阱:
- 我们应该在加载时显示
progressBar
和禁用。okButton
我们应该喜欢加载/内容/错误密封类(让我们调用它ContentState
)并将其实例放在我们的ViewState
. View 知道如何渲染ContentState.loading
、显示progressBar
和禁用okButton
. 我对吗? - 那么如何处理导航呢?与 1.3 和 1.4 相同的问题。
- 我已经看到导航应该被视为副作用的意见,但同样是 1.4。
- 吐司 - 状态是否存在或者我们认为这是副作用?同样的问题。
谷歌提出SingleLiveEvent
了解决方案,但它看起来很奇怪,然后应该有尽可能多的LiveData<SingleLiveEvent>
流,而不是真正的单一事实来源。其他人建议从渲染函数生成的新意图更好,但有可能一些异步操作会再次改变状态,我们将在第一个显示时获得第二个 Toast,依此类推。
java - Mosby 接口 MvpView 和 MvpPresenter 不可见,版本 3.1.0
我有一个 Android 项目、Java 语言和 Gradle。我正在尝试使用 Mosby-Conductor 库,因此我导入了下一个库:
但是,我的项目中看不到 MvpView和MvpPresenter接口,我无法实现它们。那些不在库的类中。这些类位于 mvp-common 模块(https://github.com/sockeqwe/mosby/tree/master/mvp-common)中,但未导入该 jar。我也尝试将该模块添加为依赖项,但没有帮助:
有没有人有同样的问题?