关于 Android MVP 的一些疑惑,求解答 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LinkZhang
V2EX    Android

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

  •  
  •   LinkZhang 2016-04-12 22:12:46 +08:00 12829 次点击
    这是一个创建于 3473 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    • 对应不同界面分别创建 presenter
    • 把所有逻辑写在一个 presenter 里面

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

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

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

    6 条回复    2016-04-13 09:47:19 +08:00
    anthonyeef
        1
    anthonyeef  
       2016-04-12 22:46:03 +08:00
    TVBG
        2
    TVBG  
       2016-04-12 22:50:46 +08:00
    要看具体的情况,不过应该可以考虑把数据放到 Model 里面。
    nekocode
        3
    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
        4
    Yasic  
       2016-04-12 23:36:32 +08:00
    个人一般遵循 “一个 presenter 对应一个 view ” 的原则,至于传递数据,具体是哪种情况需要把数据先传给 view 再传给下一个 presenter ? view 只应该跟对应的 presenter 通信
    LinkZhang
        5
    LinkZhang  
    OP
       2016-04-13 06:53:20 +08:00 via iPhone
    @Yasic 第一步需要请求服务器获取 token ,后面的请求都要使用这个 token ,如何把 token 传递给后面的 present 呢
    Yasic
        6
    Yasic  
       2016-04-13 09:47:19 +08:00
    @LinkZhang 这种在 app 运行周期里“多次访问少量更新”的数据一般会采取本地存储( SharedPreferences ,数据库, contentprovider 。。)或者静态资源访问的方式,类似于这里讨论的 t/264641#reply8
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4600 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 04:03 PVG 12:03 LAX 21:03 JFK 00:03
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86