为了方便新手开发人员更简单直接地了解MVP架构的核心思想,这里对MVP做了简化,省略了接口化这一步,并且配合代码和业务流程逐步讲解,轻松了解MVP的优势和方便之处。建议每看一步,去图片中去看对应代码,一般一步只有几行代码。
- Activity创建一个Presenter,绑定自己的Context(View创建一个和自己绑定的Presenter)
- 用户点击了Activity的登录按钮,调用Presenter向服务器发出登录请求(Activity调用Presenter执行业务)
- Presenter调用LoginHandler来登录(别的地方可能也会需要登录功能,所以将这个业务单独抽离出来复用,Presenter调用业务处理模块)
- Presenter将获取到的数据解析为用户数据(Presenter创建Model)
- Presenter调用UserDao将用户数据存储到数据库(Presenter调用可复用的数据库模块)
- Presenter携带数据回调Activity(Presenter携带Model,回调View)
- Activity使用User对象来更新界面(View接收Presenter返回的Model)
- 用户点击了Activity的更新位置按钮,调用Presenter修改用户位置(Activity调用Presenter执行业务)
- Presenter将新的User数据提交到服务器和数据库中(Presenter调用多个可复用模块,Activity通过Presenter更新了Model)
以下的代码,业务场景是为了模拟MVP应用场景虚构出来的,代码也用到了一些简化的框架,所以不用纠结业务和代码细节,重点在于理解MVP的调用过程(其实很简单)