您的位置:首页 > 移动开发 > Android开发

Android多页面传递问题(1)

2015-10-12 17:45 309 查看
好久没有深入接触Android,遇到一个简单的页面传递问题,让我深深的感受到了,自己知识的缺少。

话不多说。正文上。

今天就说的是一个简单的一个多页面问题:

题目如下:

A页面只能启动B页面,且A页面不会finish掉,B页面只能启动C页面,且B页面不会finish掉。
C页面关闭的时候B页面也同时关掉,并且C页面的数据要传递给A页面,并且A页面是不能重新开启的。

如图:



下面我们来说下解决方案,解决方案有五种,大家可以根据自己的喜好来选择:

方案1:采用单例模式

把A设置为单例,C启动A页面并把参数给传递进去 采用startactivity来进行启动

如图:



看到红框里面标出的就是采用单例模式

方案2:

采用局部广播来进行数据传递

动态注册广播

如果a启动b的时候a没有finish的话a实际上是没有被销毁的,在后台呢,广播的话只是从后台唤醒了,并不会产生一个新的A

(这个方案我还没有仔细看,好久没有接触广播,所以我还需要看下,之前就一直害怕这种广播机制,不想触碰,但是现在博主是一个打不死的小强,感觉编程其实没有那么可怕,有着一颗学习的心。什么都不怕的节奏,呼呼)、

方案3:把需要传递的数据保存在XML里,在A页面要A的onResume里面取出来。但是现在考虑到一个问题就是,比如页面在运行中,这时突然拍照,或者来电话的时候立马又会走onstop-onresume,会二次运行。所以又需要一个变量。对于稳定性和易用性,不建议使用此方案。

方案4:A写接口,C页面实现。

方案5:

baseactivity 复写 startactivity
,在application 保存启动记录,然后进行关闭
方案6:

eventbus第三方插件

 EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦。

方案7:用static变量来进行值的传递

一个小小的问题,可以有这几种解决方案,所以遇到不太把握的问题,多向大家请教,会收到意想不到的结果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android