Android之页面通信

来源:互联网 发布:淘宝运营培训班 编辑:程序博客网 时间:2024/06/17 13:53

今天这篇文章主要是记录下我在做android开发过程中,当需要页面与页面之间进行通信的时候,经常用到一些的通信技术。这里我的意思是比如当你从一个页面开启另一个页面甚至有开启了很多个页面的时候,当这些开启的页面做了一些对根页面有影响的时候,那么我们需要让根页面及时更新。那么这个时候我们一般有什么方式来进行通知根页面进行更新呢。我平时的做法是这样的,比如现在我们项目中一般会有个主页面,里面会放置几个fragment,一般最后一个比如是个人中心,里面有个头像,当点击头像的时候,进入到个人详情页,在个人详情页修改头像,修改之后我们肯定是有个这样的需求的,那就是刷新主页面中的个人中心Fragment,那么我们这个时候可以怎么做呢,那我们最常用的做法就是当开启个人详情页的时候,利用startActivityForResult,然后当修改完头像后,利用setResult来返回到当前页面的onActivityResult来进行数据的刷新。这种方式是可以的,可是如果是我们不是以这种方式开启的,也许我们当前页面与我们要刷新的页面相差很远,那我们通过这种方式就显的有点力不能及了。这个时候我们的广播就可以发挥作用了。比如上个例子,我们可以在个人中心Fragment里注册个广播(这种叫做代码中注册广播,和清单文件那种不同,是生命周期比较短的广播,它随着activity的创建而创建,随着销毁应该被销毁)。然后不管你到了哪个页面,一旦需要刷新个人中心Fragemnt里的数据,只需要通过sendBroatCast来发送广播,告知其进行刷新即可,而且android提供了LocalBroadCastManager来管理本地注册的广播接受者,方便快捷。但是广播一般用于大事件的通知,如果只是为了通知页面的刷新,总感觉有点大材小用(个人理解)。而这个时候,第三种方式也就登场了,这是个第三方的jar包,EventBus,事件订阅发布,简单,方便,快捷,高效。这个jar包相当好用,只需要你在你需要被通知的地方regist,然后在页面被销毁的时候unregist,然后只需要复写几个方法即可,这里只举例一个,比如onMainThread(),这代表将事件的出来放到主线程。然后当你在其他页面需要刷新的时候,只需要调用post方法,即可,post方法参数里可以定义个自定义事件,然后在onMainThread即可接受到此事件。判断是否匹配之后即可进行你想要的操作啦,是不是很爽,哈哈。这就是我所常用的页面之间通信的方式,大家共同学习。

0 0
原创粉丝点击