我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Facebook移动架构:Android Flux架构详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Facebook移动架构:Android Flux架构详解

  要为Android应用找到一个好的架构不是一件容易的事情。谷歌似乎不太在乎这个事情,因此在设计模式上,除了Activity 生命周期管理之外,再也没有官方的推荐。   但是,为你的应用打造一个架构是非常重要的。不管你是否喜欢,任何应用终都会有一个架构。因此你好是成为一个架构的奠基人,而不是等着它出现。   : Clean Architecture   目前的趋势是采用Uncle Bob在2012年对web应用提出的建议: Clean Architecture。   但是我发现Clean Architecture对于绝大多数安卓应用来说都有点过度设计了。   通常移动应用要比web应用的生命短。移动端技术的发展太快,以至于发行的app可能在一年后已经完全过时。   移动应用所做的事情很少。绝大多数的用例都只是数据信息流的消费。从API获取数据,显示数据给用户,很少有输入与写入。   所以它的业务逻辑并不复杂。至少不如后端一样的复杂。虽然你要处理很多平台上的问题:内存,存储,暂停,恢复,网络,定位等等,但是这些都不是业务逻辑。所有app都有这些东西。   因此,绝大多数app似乎都无法从类似于复杂的分层或者工作执行优先级队列中获益。   他们也许只是需要一种组织代码的简单方式,能高效的一起工作,更容易的发现bug。   Flux 架构介绍   Flux 架构 被Facebook使用来构建他们的客户端web应用。跟Clean Architecture一样,它不是为移动应用设计的,但是它的特性和简单可以让我们很好的在安卓项目中采用。

  要理解Flux,有两个关键的特点   数据流总是单向的一个单向的数据流 是 Flux 架构的核心,也是它简单易学的原因。如下面讨论的,在进行应用测试的时候,它提供了非常大的帮助。   应用被分成三个主要部分:   View: 应用的界面。这里创建响应用户操作的action。   Dispatcher: 中心枢纽,传递所有的action,负责把它们运达每个Store。   Store: 维护一个特定application domain的状态。它们根据当前状态响应action,执行业务逻辑,同时在完成的时候发出一个change事件。这个事件用于view更新其界面。   这三个部分都是通过Action来通信的:一个简单的基本对象,以类型来区分,包含了和操作相关的数据。   Flux Android 架构   在Android开发中使用Flux设计规范的目的是建立一个在简单性与易扩展易测试之间都比较平衡的架构。   第一步是找到Flux元素和安卓app组件之间的映射。   其中两个元素非常容易找到与实现。   View: Activity o或者Fragment   Dispatcher: 一个事件总线( event bus),在我的例子中将使用Otto,但是其它任何实现都应该是ok的。   Actions   Actions也不复杂。它们的实现和POJO一样简单,有两个主要属性:   Type: 一个String,定义了事件的类型。   Data: 一个map,装载了本次操作。   比如,一个显示用户详情的典型action如下:   Bundle data = new Bundle();   data.put("USER_ID", id);   Action action = new ViewAction("SHOW_USER", data);   Stores   这可能是Flux理论中难的部分。   如果你之前使用过Clean Architecture,你可能难以接受。因为Stores承担了原本被分成多层的责任。   Stores包含了application的状态与它的业务逻辑。它们类似于rich data models但是可以管理多个对象的状态,而不仅仅是一个对象。   Stores响应Dispatcher发出的Action,执行业务逻辑并发送change事件。   Stores的输出是这单一的事件:change。其它对Store内部状态感兴趣的组件必须监听这个事件,同时使用它获取需要的数据。   系统中不再需要任何其它组建去了解application的任何状态信息。   后,stores必须对外公开一个获取application状态的接口。这样,view元素可以查询Stores然后相应的更新UI。

  比如,在一个Pub Discovery App 中,SearchStore被用来跟踪被搜索的item,搜索结果以及搜索历史。在同一个应用中,一个ReviewedStore同样包含了浏览pub的列表以及必要的逻辑比如根据review排序。


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Facebook移动架构:Android Flux架构详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Facebook移动架构:Android Flux架构详解

要为Android应用找到一个好的架构不是一件容易的事情。谷歌似乎不太在乎这个事情,因此在设计模式上,除了Activity 生命周期管理之外,再也没有官方的推荐。但是,为你的应用打造一个架构是非常重要的。不管你是否喜欢,任何应用终都会有一个
2022-06-06

Android学习之Flux架构入门

Flux 架构介绍 Flux 架构 被Facebook使用来构建他们的客户端web应用。跟Clean Architecture一样,它不是为移动应用设计的,但是它的特性和简单可以让我们很好的在安卓项目中采用。Flux模式最大的特点是单向的数
2022-06-06

Android架构发展进化详解

Android系统架构从上到下分为五层:应用层、应用框架层、系统运行库层、硬件抽象层、Linux内核层,Android架构也经历了多次演进,下面我们来详细了解一下
2022-11-13

详解Android官方架构中UseCase

这篇文章主要为大家介绍了Android 官方架构中的 UseCase 该怎么写示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-05-19

如何理解FACEBOOK的系统架构

本篇文章为大家展示了FACEBOOK 的系统架构,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Web 前端是由 PHP 写的。Facebook 的 HipHop 会把PHP转成 C++ 并用 g++
2023-06-05

彻底理解Android架构

本篇文章理论知识和架构原则实践了一个 wanAndroid 项目,全部采用 kotlin 编写并抛弃了 Rxjava,因为 kotlin 可以完全替代他,github 本项目中汇总了业界知名的架构文章和一些项目帮你彻底理解架构。后续本项目将

详解Android中的MVP架构分解和实现

1、概述 传统的Android开发架构一般是MVC模式,Model:业务逻辑和实体模型View:对应于布局文件Controllor:对应于Activity 单独从逻辑看起来非常好,与我们做Web开发时,开发模式类似,但在实际开发中,View
2022-06-06

Spring Boot构建框架详解

什么Spring Boot?Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。用我的话来理解,
2023-05-30

SpringCloud 微服务架构详解

SpringCloud 微服务学习(一) SpringCloud Alibaba1.1、单体 分布式 集群1.2、系统架构的演变1.2.1、单体应用架构1.2.2、垂直应用架构1.2.3、分层架构1.2.4、SOA架构1.2.5、微
2023-08-16

详解React Fiber架构原理

Fiber 可以理解为一个执行单元,每次执行完一个执行单元,React Fiber就会检查还剩多少时间,如果没有时间则将控制权让出去,然后由浏览器执行渲染操作,这篇文章主要介绍了React Fiber架构原理剖析,需要的朋友可以参考下
2022-11-13

详解 iOS APP 架构设计

App 架构是软件设计的一个分支,它关心如何设计一个 app 的结构。
iOSAPP架构2024-12-03

Netty的基本架构详解

我们会一起俯瞰整个Netty的脉络,以便于对Netty的架构原理有一个整体的认知!
Netty架构NIO2024-12-03

Hadoop数据湖架构详解

Hadoop数据湖架构是一种灵活的数据存储和处理架构,用于存储和管理大规模的结构化和非结构化数据。数据湖架构基于Apache Hadoop生态系统,包括Hadoop分布式文件系统(HDFS)、MapReduce、YARN和其他相关组件。数
Hadoop数据湖架构详解
2024-02-29

高可用架构最全详解(八大主流架构方案)

通过监控和警报系统,可以实时监测系统健康状态和性能指标,并在发生异常或超过预设阈值时发出警报的系统。

基于Linux的tty架构及UART驱动详解

UART 是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。在嵌入式设备中,UART 用于主机与辅助设备通信,如汽车音与外接AP 之间的通信,与PC 机通信包括与监控调试器和其它器件,如EEPOM通信。

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录