android数据回传多个页面_Android跨界面共享数据——LiveData应用

本文介绍了在Android中如何使用LiveData实现跨界面数据共享,从而解决数据回传多个页面的问题。通过创建LiveData单例,观察者模式以及状态信息实体类,避免了传统方式带来的耦合和扩展性问题。
摘要由CSDN通过智能技术生成

业务场景

ezgif.com-video-to-gif.gif

3个界面中有3个独立控件,需要同步他们的状态,即其中任一控件状态变化,其余两个随之而变。

解决方案

1. 传递值:startActivityForResult() + onActivityResult()

这是最容易想到的方案,实现步骤如下:在界面A将控件状态封装在Intent中

在界面A通过startActivityForResult()跳转到界面B

在界面A返回之前通过setResult()将控件状态返回给界面A

在界面A的onActivityResult()中获取控件状态并更新UI

但该方案有缺点:代码可读性较差,特别是当onActivityResult()中还夹杂着其他业务逻辑。

增加了Activity间的耦合(即Activiy B依赖于Activity A的特殊传值方式,Activity A依赖于Activity B的回传值)。因为界面间是两两耦合的,所以也导致了扩展性较差,如果需求改成“从Activity A直接跳转到Activity B”,需要重新出处理Activity A到Activity B的跳转逻辑。

2. 共享值(持久化)

既然通过传递值的方式不够好,那直接“共享值”呢?即将每次状态改变都持久化(存在本地),每次绘制界面都从本地读取状态。

设想界面A中有一个列表,每个表项都包含一个需要状态同步的控件,当服务器返回一批新数据后,需要挨个将数据进行存储,随着列表不断刷新,本地存储的内容就不断增多,为控

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值