我试着了解编程"清洁"的最佳方法。 Android应用。我发现了一个有趣的article,它使用了一种3层架构。
现在我读到android使用MVP设计模式并尝试理解这一点。我理解MVP原理(在android上下文中)的方式是:
这是正确的吗?
如果这是正确的,然后也正确 3层模型完全符合MVP原则,因为:
答案 0 :(得分:10)
我想澄清的第一件事是,MVP或其他任何模式都不是Android dev的特定模式,可以应用于任何其他框架。
我认为你得到了它的要点:
如果您对Android应用程序架构感兴趣,我建议您观看今年在Android开发者峰会上发表的演讲。这是我见过的最好的作品之一
答案 1 :(得分:1)
即使这个问题有答案,我也不认为这个答案是完整的。
MVP是一般概念,可以有许多不同的实现,其中一些实质上有所不同。此外,这个概念本身也很模糊 - 不同的人在谈到MVP时可能会有不同的概念。最常见的一种如下图所示:
无论实施如何,MVP组件的一般定义是:
如果您在Android开发环境中需要有关MVP的更多信息,可以在以下帖子中找到它:MVP and MVC Architectural Patterns in Android
答案 2 :(得分:1)
在android中实现MVP时需要解决的重要问题是活动泄漏,由于后台进程更新已关闭的活动而导致内存泄漏和应用程序崩溃。
由于演示者引用了活动,因此如果无法对演示者进行垃圾回收,活动将保留在内存中。
可以通过使用活动或碎片的生命周期方法并释放这些方法中的资源来解决这两个问题,从而防止内存泄漏和应用程序崩溃。
使用RXJava可以轻松实现与资源相关的后台工作的清理,有关MVP和RXJava的MVP的更多信息,请参见http://www.zoftino.com/android-model-view-presenter-mvp-pattern-example
答案 3 :(得分:1)
这是在应用程序android_mvp_login_sample中实现MVP模式的最简单方法
答案 4 :(得分:0)
当您了解Clean Architechure的基础知识时。以下示例描述了您的MVP模式的实际实现方式。
示例:
interface BaseContract {
interface BaseView {
//Methods for View
void onDoSomething();
}
interface BasePresenter {
void doSomething();
}
}
class BaseMainPresenter implements BaseContract.BasePresenter {
BaseContract.BaseView view;
BaseMainPresenter(BaseContract.BaseView view) {
this.view = view;
}
@Override
public void doSomething() {
if (view != null)
view.onDoSomething();
}
}
class DemoClass implements BaseContract.BaseView {
//Create object of Presenter
/****
* Example :
* BaseMainPresenter baseMainPresenter = new BaseMainPresenter(this);
*/
@Override
public void onDoSomething() {
//Deal with Context here.
}
}
请参阅以下链接以获取示例实际实施方案&了解有关Clean Architechure的更多信息:https://github.com/android10/Android-CleanArchitecture
答案 5 :(得分:0)
这里是github https://github.com/saksham24/Android-Firebase-Mvp-Mvc-Mvvm-chat 我制作了一个包含3个具有相同功能的应用程序的repo,但是用3种不同的android模式编写(Mvc,Mvp,Mvvm)
如果我们在它们上面得到一个简单的好例子,那么理解三种不同的模式是非常容易的,所以我做了一个回购来向我的开发者社区贡献我的知识。 此外,存储库是使用适当的java准则和约定(包括命名和包,模块)编写的,因此寻找此类项目的人也可以查看此存储库。
现在
如果你想知道android Mvp,Mvc,MvvM之间的区别请看领域的这个解释 https://academy.realm.io/posts/eric-maxwell-mvc-mvp-and-mvvm-on-android/
如果你想比较三种模式,请看这个奇迹的完整博客https://thinkmobiles.com/blog/mvp-vs-mvvm-android-patterns/
答案 6 :(得分:0)
现在我读到android使用MVP设计模式并尝试 明白这一点。我理解MVP原理的方式(在 android context)是:
模型层是逻辑类
演示者是"链接"到XML(活动)
被动视图是 XML' S。
这是对的吗?
不完全:对于 Model 层,它是真的,但对于 Presenter 则不是。 Presenter 未链接到XML,尽管它通过其构造函数引用了 View 。 查看是android中的Activity
/ Fragment
。
您可能需要查看here以获取适用于Android的示例MVP应用。