如何以MVP模式减少活动中的方法计数?

时间:2019-06-11 07:57:04

标签: android mvp android-mvp

我在MVP架构中构建了我的应用,但是我在活动和演示者中的许多功能遇到了麻烦。如何减少方法计数?

我已经听说过一些解决方案:

  • 将大型演示者拆分为较小的演示者,但随后我必须在我的活动中为演示者连接创建另一个方法。
  • 在我的活动中创建一个新类并创建一个实例,该类将实现View接口,并需要管理演示者所需的所有视图。但是我不相信这种解决方案。我认为这可能会给我的体系结构增加麻烦。

关于上述一种方法,您还有其他想法或优点/缺点吗?

1 个答案:

答案 0 :(得分:0)

除了减少活动/片段

中的方法之外,还有其他方法

一个称为继承,您可以在其中将抽象方法扩展到主 Activity / Fragment 类中,并从那里管理生命周期。

例如,使用 BaseActivity BaseFragment ,您可以在其中包含多个方法,并将其扩展到您的主要Activity或{{1 }}

BaseActivity.kt

Fragment

}

BaseActivity 扩展了abstract class BaseActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { requestWindowFeature(Window.FEATURE_NO_TITLE) window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN) super.onCreate(savedInstanceState) setContentView(getLayout()) } @LayoutRes abstract fun getLayout(): Int fun Context.toast(message: String?, toastDuration: Int = Toast.LENGTH_SHORT) { Toast.makeText(this, message, toastDuration).show() } override fun onDestroy() { super.onDestroy() //Do here what you want } override fun onStop() { super.onStop() //Do here what you want } override fun onStart(){ super.onStart() //Do here what you want } override fun onPause() { super.onPause() //Do here what you want } override fun onRestart() { super.onRestart() //Do here what you want } ,这意味着您可以在此类中管理AppCompatActivity()的生命周期,然后只需在主要{{1 }},当您执行此操作时, BaseActivity 内部的所有功能都将应用于您的Activity类,如果要更改或覆盖某些内容,只需从该抽象类中调用方法

MainActivity.kt

Activity

这样做,您可以在 BaseActivity 中拥有多个MainActivity方法,这将减少类中从 BaseActivity 继承的方法同样,如果您需要使用class MainActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) //You dont need setContentView since we do all the configuration in the BaseActivity toast("This is a message with a toast since we implemented thi into the BaseActivity we do not need to do toasts all over again") } override fun getLayout(): Int { return R.layout.activity_login_view } //For example, if you want to override the functionallity from a method inside your BaseActivity you can implement it like always override fun onRestart() { super.onRestart() //Replace what BaseActivity onRestart() does } ,只需扩展Activity而不是Fragments即可创建一个名为 BaseFragment

的类

此外,添加用于查看操作和演示者操作的界面是组织我们的应用程序的一种好方法,您可以看一下我在Github上登录时使用的示例