Articles of mvp

适配器在Mvp模式中的作用?

你如何对待MVP模式中的适配器? 例如,在这个项目https://github.com/msahakyan/nested-recycler-view中有一个MovieAdapter, https://github.com/msahakyan/nested-recycler-view/blob/master/app/src/ main / java / com / android / msahakyan / nestedrecycler / adapter / MovieAdapter.java这个家伙有一个recyclierview作为这个适配器的项目,(如果你看看他的项目,他已经在他的主屏幕上嵌套了recyclierview。)因为他有这样的一个项目,他进行服务调用和其他通知,加载数据(从服务中获取)等操作在这个适配器中。(没有通信到相关的片段/活动)正如你所看到的,这个适配器有很多工作要做。 如果你这样做,你将如何在mvp模式中实现这一点? 具体来说,在这种情况下,你会在适配器中有presenter对象,还是有视图对象来进行调用,通知和加载?

是否有RxJava等效的Handler.postDelayed(Runnable r,long delayMillis)

我试图调用一个返回void(Java原始types)的方法。 我想延迟调用一个预定义的毫秒数。 我知道这可以简单地使用Handler完成,我宁愿不使用它。 我试着做: Observable.just(getView().setAttachments(attachments)).delay(50, TimeUnit.MILLISECONDS); 但是,有一个编译错误,即: Observable.just(java.lang.Void) cannot be applied to (void) 还有另一种方式吗? 我不想使用Handler是代码是在Presenter(MVP模式)中定义的,我不想在Java类中使用Android特定代码。 我希望它是一个冷的Observable,因为我不必订阅它,只调用该方法一次。

在MVP上下文中使用Service作为Presenter是一个好主意

简短说明我的问题是:在MVP架构中,使用服务作为演示者来控制实现为服务的模型是个好主意吗? 替代问题:使用服务来控制另一个服务是一个好主意吗? 上下文: 我正在编写一个与蓝牙传感器通信的应用程序。 该应用程序有一个服务 (也称为BluetoothService ),它可以建立连接并管理与传感器的通信。 该应用程序有几个片段,但只有少数与蓝牙传感器的操作有关。 用户应该能够开始操作,导航到不同的片段,然后观察传感器完成的操作的结果。 我的目的: 我想编写一个组件(也称为BluetoothController ),它在传感器(由我的应用程序由BluetoothService )和应用程序的其余部分之间建立链接。 BluetoothController包含描述传感器必须完成哪种操作的对象(只有一个操作,串行操作,操作types……),因此BluetoothController的目的是让操作独立于蓝牙传感器然后能够用模拟蓝牙类测试应用程序。 我将BluetoothService视为模型,将BluetoothController视为演示者,我错了吗? 为何选择服务: 因为如果用户在片段之间导航,它不会死亡 因为它可以通过bindService通过整个应用程序bindService 因为bindService是唯一的入口点,我想我可以控制一次只完成一个操作 因为我将Service视为活动组件,所以即使没有任何绑定数据,它也可以继续接收数据 这项服务既可以启动也可以绑定(如音乐播放器): 即使没有绑定任何组件也能继续运行, 轻松沟通 所有服务都将在应用程序进程中,以便在没有绑定程序的情况下完成通信,而不是方法调用 任何建议都会非常感谢,提前感谢 为什么不是别的东西: RetainedFragment(对我来说)只是容器 pojo presenter只是视图和模型之间的网关,如果它们没有附加到视图,它们应该会死掉。 结论 我错了吗? 你觉得这个架构有困难吗? 是否有更适合我目的的其他Android组件? 任何建议都将受到高度赞赏,谢谢你的进步

如何使用第三方SDK关注MVP架构?

我见过很多项目,展示了如何在MVP中实现登录,但找不到与Google / Facebook登录相关的任何内容。 在登录流程强烈绑定到Android组件生命周期的情况下,我们应该怎么做? 我看到MVP的主要好处在于我们在Context之上构建了一个抽象,但是当我们需要关注时,这个抽象会显得过于复杂,例如,Facebook登录流程:你需要用CallbackManager注册FacebookCallback ,调用logInWithReadPermissions() (传递) Activity / Fragment to it),将onActivityResult()委托给callbackManager ,这将触发FacebookCallback的方法。 我的想法是创造类似的东西 interface AuthInteractor { void doFacebookLogin(); void doGoogleLogin(); } GoogleApiClient了解Context并初始化GoogleApiClient 。 它将在Presenter中注入,但是所有这些回调(特别是在Facebook的SDK中)的东西将变得太复杂。 在这种情况下省略MVP不是更好吗?

如何使用Dagger 2将多个组件注入同一个对象

所以我有一个ApplicationComponent用于将单例注入到我的片段和演示者中,但我正在尝试创建一个组件以注入AppComponent所做的同一个演示者。 沿着这些方向的东西。 @Component{modules = FileManagerModule.class} public interface FileManagerComponet { public void inject(MyPresenter presenter); } @Component{modules = AppModule.class} public interface AppComponent { public void inject(MyPresenter presenter); } @Module public class AppModule { private Context appContext; @Provides @Singleton public SharedPreferences preferences() { return appContext.sharedPreferences(); } … } @Module public class FileManagerModule { private Context activityContext; @Provides public […]

Android MVP:一个包含多个片段的活动

我有一个Activity,它托管多个片段,用于定义用户注册流程中的每个步骤。 流程很复杂,下一步由前面步骤中的用户操作定义。 流程如下: MainActivity | Fragment1 –> Fragment2 –> Fragment3 –> Fragment4 \ –> Fragment5 –> Fragment6 在MVP之后,我为每个片段提供了View&Presenter。 我担心的是如何以MVP方式在Fragment和Activity之间进行通信。 每个Fragment的结果都需要可供Activity使用,以决定接下来需要显示哪些Fragment。 我想到的一种方法是为每个片段定义一个由Activity实现的监听器。 我以某种方式发现这有点难看,因为最终Activity需要实现其中的6个并且看起来不可扩展。 什么是更好的方法?

Android MVP策略

我正在将我的应用程序迁移到MVP。 已经从这个konmik上获得了静态演示者模式的提示 这是我简短的MVP策略。 为简洁起见,删除了大部分样板和MVP监听器。 这个策略帮助我改变了方向,certificate了我的后台流程。 与完成活动的暂停相比,活动正常恢复正常暂停。 此外,Presenter只有应用程序上下文,因此它不会保留活动上下文。 我不是Java专家,这是我第一次涉足MVP并使用静态演示者让我感到不舒服。 我错过了什么吗? 我的应用程序运行正常,响应速度更快。 视图 public class MainActivity extends Activity{ private static Presenter presenter; protected void onResume() { if (presenter == null) presenter = new Presenter(this.getApplicationContext()); presenter.onSetView(this); presenter.onResume(); } protected void onPause() { presenter.onSetView(null); if(isFinishing())presenter.onPause(); } } 主持人 public class Presenter { private MainActivity view; Context context; public Model […]

Android MVP:哪个层应该存储上下文variables

当用户点击视图上的按钮时,我发现自己需要播放声音文件。 MediaPlayer需要创建上下文。 放置MediaPlayer初始化代码的最佳方法是什么? 我应该将上下文传递给演示者方法并在那里播放吗? 或者只是在视图上播放是可以的。

采用MVP设计模式的Google Analytics

哪个更好,将谷歌分析代码放在演示者中或将其保留在活动中?

模型视图演示者 – 相同的视图,不同的演示者

我正在使用MVP构建一个Android应用程序,我对此模式有一个疑问。 假设我有一个用于创建新人的屏幕。 此屏幕将显示一个EditText用于插入名称,另一个用于显示姓氏,一个ImageView用于显示已选择的照片图片等。这将导致一个View界面,由Fragment实现。 它将与一个Presenter接口配合,由另一个类实现。 精细。 现在我有另一个function:用于编辑现有人的屏幕。 碰巧,此function的View与创建新人的View相同。 但是, Presenter与众不同。 它将从db中加载现有人员以使用当前数据预填充视图开始,单击“save”时对数据库的操作将是更新而不是插入。 因此,我认为这是MVP的一个示例, 其中一个View使用演示者的不同实现来实现不同的用例 。 您认为这是一个正确的假设,还是您认为不同的function应该具有不同的View和Presenter接口? 此外,如果您使用的是常见的View和不同的Presenters , View的实现是否会很常见,还是会导致两个类实现相同的接口? 在实践中,我看到两个选项。 只有一个Fragment实现View 。 根据用户是要创建新人还是更新现有人,Fragment应该接收并使用不同的Presenter。 有两个Fragment 。 每个人都会实例化一个不同的Presenter 。 使用组合或inheritance来避免在两个片段之间复制代码。 在这些情况下,您认为哪种情况更好? 谢谢。