Android多页面传递问题(1)

好久没有深入接触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变量来进行值的传递

一个小小的问题,可以有这几种解决方案,所以遇到不太把握的问题,多向大家请教,会收到意想不到结果。



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值