关于 Android MVP 的一些疑惑,求解答

2016-04-12 22:12:46 +08:00
 LinkZhang

最近在尝试用 MVP 架构重构项目,遇到一个疑惑,求解答

一个注册业务逻辑分三步对应三个界面,后面的步骤都依赖前一步返回的数据,建立 presenter 的时候有 2 种方法

尝试方法一,传递数据的时候要先把数据传递给 view,再通过 view 传递给下一个 presenter ,数据和视图耦合了

尝试方法二,必须保证每个界面获取同一个 presenter 实例,似乎要把 presenter 写成单例

不知道大家有没有更好的解决方法?

10258 次点击
所在节点    Android
6 条回复
anthonyeef
2016-04-12 22:46:03 +08:00
TVBG
2016-04-12 22:50:46 +08:00
要看具体的情况,不过应该可以考虑把数据放到 Model 里面。
nekocode
2016-04-12 22:51:16 +08:00
你方法一描述得不够仔细,无法看出具体的问题,不过你可以参考下这个帖子 https://www.reddit.com/r/androiddev/comments/3lx99j/mvp_where_to_put_activity_intent

帖子表达的意图很清楚:页面之间跳转是应该在 View 层实现的。

另外方法二是不推荐的,通常 View 与 Presenter 是一对一或一对多的关系,你把 Presenter 设计成单例的话, Presenter 的生命周期就在各个 View 之上了,处理不小心的话很容易造成内存泄漏。
Yasic
2016-04-12 23:36:32 +08:00
个人一般遵循 “一个 presenter 对应一个 view ” 的原则,至于传递数据,具体是哪种情况需要把数据先传给 view 再传给下一个 presenter ? view 只应该跟对应的 presenter 通信
LinkZhang
2016-04-13 06:53:20 +08:00
@Yasic 第一步需要请求服务器获取 token ,后面的请求都要使用这个 token ,如何把 token 传递给后面的 present 呢
Yasic
2016-04-13 09:47:19 +08:00
@LinkZhang 这种在 app 运行周期里“多次访问少量更新”的数据一般会采取本地存储( SharedPreferences ,数据库, contentprovider 。。)或者静态资源访问的方式,类似于这里讨论的 https://www.v2ex.com/t/264641#reply8

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/270567

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX