jjzjj

android - 带有 EventBus 的 Model View Presenter,如何将事件返回给 Presenter?

我正在使用Model-View-Presenter设计模式和EventBus(Otto)。我实现此模式的全部原因是仅将事件与演示者分离,并让演示者更新View。这是我拥有的一些代码的示例,我将使用获取Events作为示例。(请注意,Events不同于EventBusEvent,意思是Events中的一个Eventcode>是一个类似“爸爸的生日”的事件,但是EventBus中的一个Event是一个总线事件。fragmentpublicclassEventFragmentextendsFragment{privateEventPresentermEventPresenter;//Init

android - Android开发中MVP模式下如何控制多线程?

最近,我尝试在我的android项目中使用MVP模式。我知道我不能在View层做业务逻辑工作。View必须将所有作品传递给Presenter层,然后等待Presenter的结果。View应该在UI线程中执行任何操作。但是Presenter可能会在Sub-Thread中做一些事情。如何控制View布局和Preseneter层中的多线程?我们将不胜感激任何帮助。 最佳答案 你有两个方向需要沟通:a)非UI到UI线程和b)UI线程到非UI线程。对于第一种情况,目前流行的方法是使用runOnUiThread()这是对这种技术和其他流行选项的

带有 View 寻呼机的 Android MVP

我正在尝试在我的android项目中实现MVP。但是当我使用viewPagerAdapter实现MVP时,我遇到了困难。为了实现MVP,我们过去常常在Activity类中创建fragment/view和presenter实例。Fragment/view和presenter都将使用契约相互通信。通过这种方式,我们将View与Presenter解耦,并通过单元测试覆盖所有业务逻辑。但是如果我们在activity中有tablayout。我们在fragmentPagerAdapter中启动了fragment。我不确定如何为其相应的演示者提供选项卡fragment/View引用。如果我在frag

android - 将 REST API 调用置于 Uncle Bob 的 Clean Architecture 中的何处?

我正在尝试在我的Android应用程序中使用UncleBob的简洁架构。所以,我关注了这个人的greatimplementation基于RxAndroid,用于DI的Dagger2。我知道要从数据存储(云或本地数据库或磁盘)获取数据,交互器(域层中的用例类)将调用数据层中的存储库。在我的例子中,我必须执行两个并行的RESTAPI调用(FoursquareAPI和GoogleplacesAPI),然后比较每个调用接收到的数据。我是否必须将这些Retrofit调用的实现放在数据层或域层的交互器中?如果任何外部API调用都属于数据层,那么在Bob大叔的方法中,交互器的作用到底是什么?我是这种

Android MVP - 展示哪个模型以供查看

我正在使用MVP设计模式。我呈现给我的View的模型目前是POJOS,它们是我本地Realm数据库的模型。也就是说,他们已经注释了与数据库相关的成员。使用演示者将从交互器返回的数据库模型映射到仅包含View应使用的数据的模型(我的View有一个单独的模型POJO)会更好吗?还是将View交给我的数据库模型是一种很好的做法?谢谢。 最佳答案 你要问的问题是IfIremovedRealmfrommyappwouldIhavetomakechangestomyviewifIusetheseentityclasses如果答案是否定的,那么我

android - 仪器测试对 MVP 的看法

我正在开发一个具有MVP架构的Android应用程序,我已经能够测试Presenter和Model类,但现在我正在尝试测试View方法。例如,我有以下观点:publicinterfaceSplashViewextendsBaseMVPView{voidinitPresenter();voidnavigateToHome();voidonError(ApiErrorapiError);}由Activity实现。publicclassSplashActivityextendsBaseActivityimplementsSplashView{//MVPPresenterprivateSpla

android - 如何以 MVP 模式将上下文传递给存储库

我一直在学习和整合MVP模式,几乎没有什么问题。我从这张图中了解到的是Activity将创建Presenter的实例,并将其引用和model对象传递给presenterMainPresentermainPresenter=newMainPresenter(this,newMainModel());接下来,如果演示者需要从本地偏好或远程存储或获取任何数据,它将询问模型。然后模型将请求存储库存储和检索数据。我遵循了一些教程,这就是我实现该模式的方式。界面publicinterfaceMainActivityMVP{publicinterfaceModel{}publicinterfaceV

android - mvp中的presenter和mvvm中的view-model有什么区别

我需要澄清一些关于mvp和mvvm设计模式的疑惑1)在更新View的mvp和mvvm中。演示者/View模型设置要在View中显示的数据或View从中检索数据演示者/View模型并显示它2)presenter和view-model之间有何不同。"MVVM使用数据绑定(bind)来更新View,而演示者使用更新View的传统方法”。是吗? 最佳答案 在MVP中,Presenter通常通过接口(interface)持有对View的引用。当Presenter计算新数据时,他负责在View/Interface上调用正确的方法来更新UI。在M

android - 如果我们可以返回一个值并在 View 中设置(MVP 结构),为什么要在 Presenter 中创建一个界面

已经两个月了,我一直在使用MVPStructure来创建Android应用。正如我发现的关于MVP的每个链接中所解释的那样,Presenter类负责处理所有业务登录和数据(来自Model类),我理解并开始工作。教程中显示的优点之一,我想在这里强调,MVP使单元测试更容易,因为没有View的依赖性(好吧,我也明白这一点)。我不明白的是为什么要创建接口(interface)来更新演示者的View,而我只能调用一个将返回值的演示者方法,然后我可以在那里设置它?让我们来看看我上面谈到的优势(单元测试)。使用这些接口(interface)单元测试会出现更多问题,因为方法需要接口(interfac

android - 如何在 android 中使用 MVP 结构刷新 recyclerview?

我想要android中MVP结构的简单示例来刷新recyclerview项目而不是整个recyclerview列表。它只会刷新android的recyclerview中的项目。 最佳答案 这个问题我想了很多。有两种可能的方法:将新的数据列表传递给适配器,它会计算出更改的内容并更新正确的项目。记录模型中的当前项,然后在计算新列表时发送ListChangeItems到适配器。我将在下面更详细地概述两者。在这两种情况下,您都需要计算当前显示的数据与新数据之间的差异。我有一个辅助类ListDiffHelper哪个做这个比较:publiccl