Android Architecture Components学习笔记

本文深入探讨了Android Architecture Components(AAC)框架,介绍了AAC的背景、设计理念及其在项目中的应用。通过官方示例BasicSample和GithubBrowserSample,详细解析了ViewModel、LiveData、Dagger等组件的使用,为开发者提供了一套全面的AAC学习指南。

#前言

Android Architecture Components是谷歌在Google I/O 2017发布的。官方的描述:
https://developer.android.google.cn/jetpack/docs/guide#recommended_app_architecture

A new collection of libraries that help you design robust testable and maintainable apps.
全新的库集合,可帮助您设计稳健、可测试和易维护的应用。

转眼Android Architecture Components(下文简称AAC)的发布将近一年了,我们的项目也基本可以使用这套框架。

曾经被质问懂不懂瀑布或敏捷开发模式,从而指责我不断尝试新工具(我也不知道此命题从何而出)。其实我的经验告诉我,很多项目所有者或许根本不懂技术,作为项目管理者的基本职能就是要利用有效的工具(比如AAC)让项目更高效的去实现可见的功能。只要能够柔性的均衡客户需求与研发周期之间的矛盾,并且兼顾维护周期那就是一个好的项目。也就是“工欲善其事必先利其器”借助于好的工具来做出好的项目。

跟很多小伙伴聊到MVC、MVP或者MVVM等模式的问题,我觉得不需要纠结于这些,还是要看项目管理的目的。分层更多的是为了权衡项目未来规模及持有周期。如果你打算长期维护一个项目(从小开始越做越大),那么就应该用更多的时间考虑如何优雅的分层、分组件以适应持续迭代的需求。

一定要客观的选择,而不是习惯性的抵制新发布的东西。早在2005年微软就提出了MVVM模式,那又能怎么样呢,甚至很多开发人员或许并不了解这段历史~~通过仔细了解AAC其实不难发现很多理念其实不是新的,只是被官方优化并规范了,通过官方发布出来而已。这样的好处不言而喻:让更多的开发者交流的时候有了官方口径。


#基于AAC官方示例的学习笔记

看到这个框架感觉不错,下载了官方示例看看。里面比较新的内容是生命周期相关以及数据库解决方案,同时也包含了很多官方或官方推荐的框架。这套官方示例麻雀虽小五脏俱全,对我们现在的项目可说受益匪浅。于是就将学习过程结合官方示例做了个记录~~

可以下载github上的Android Architecture Components官方示例,整个这一系列文档都是围绕着其中两个使用Java开发的示例展开的:

BasicSample : 演示了使用SQLite数据库、Room保存数据以及ViewModels和LiveData的使用
GithubBrowserSample :比较完整的展示了AAC,包含了Dagger和Github API。运行这个示例需要Android Studio 3.0以上版本。

这两个示例主要演示了AAC,也包含了诸如DataBinding、Dagger、Mockito等。我是随着不断学习随机记录下来,所以这个系列的文章也会涉及到这些内容,难免错误也比较琐碎,不当之处望不吝指教。


#两个示例简述

##BasicSample

包含了一个Activity两个Fragment,分层也非常清晰。主要是演示了一个产品列表,以及产品详情。在产品详情Fragment里包含了评论列表。

这个示例是没有网络请求组件的,数据是通过DataGenerator.java生成并填充。

几个全局类

AppExecutors.java是一个全局执行池,通过对任务分组,避免互斥等待的情形。比如数据的获取可以通过磁盘读取而不用等待网络请求。这里声明了三个Executor,分别是:DiskIO、NetworkIO、MainThread。

BasicApp.java是这个示例的Application。

DataRepository.java实现了Repository,是处理products、comments的仓库。

##GithubBrowserSample

代码及资源部分包含了20个文件夹72个文件。整个项目由一个Activity(MainActivity)三个Fragment(SearchFragment、RepoFragment、UserFragment)组成。MainActivity会先加载SearchFragment,通过录入的关键字在GitHub上搜索相关的库。

repo = repository 一般指Github上repository(代码仓库)的缩写

这个示例在BasicSample的基础上增加很多东西比如Binding、LiveData等高级用法,并且增加了Dagger、Mockito等。

就Binding与Dagger本身而言也是存在很多新内容的(起码我感觉是这样~~)。所以从零开始学习这个示例还是得费些周折的,如果是不太熟悉这些概念,建议多了解一下。


#这一堆的内容

《升级Android Studios3.1.1以及手动配置Gradle》

《AAC学习笔记——Binding(一)》
《AAC学习笔记——Binding(二)》
《AAC学习笔记——Binding(二)》
《AAC学习笔记——Binding(二)》

《AAC学习笔记——Dagger(一)》
《AAC学习笔记——Dagger(二)》
《AAC学习笔记——Dagger(三)》
《AAC学习笔记——Dagger(四)》

《AAC学习笔记——ViewModel(一)》
《AAC学习笔记——ViewModel(二)》

《AAC学习笔记——Lifecycle(一)》
《AAC学习笔记——Lifecycle(二)》

《AAC学习笔记——LiveData(一)》
《AAC学习笔记——LiveData(二)》
《AAC学习笔记——LiveData(三)》

《AAC学习笔记——Repository》

《AAC学习笔记——Room(一)》
《AAC学习笔记——Room(二)》

《AAC学习笔记——Espresso》
《AAC学习笔记——Mockito》

内容概要:本文围绕动态环境下多无人机系统的协同路径规划与防撞展开研究,提出基于Matlab代码实现的解决方案。重点研究在复杂、动态变化的环境中,多架无人机如何通过协同算法实现高效路径规划,并有效避免相互之间的碰撞。文中采用先进的优化算法与避障策略,结合仿真验证,展示了系统在实时性、安全性与协同效率方面的性能表现。研究涵盖环境建模、路径规划算法设计、冲突检测与规避机制等关键环节,通过Matlab平台完成算法实现与仿真测试,具有较强的可复现性和工程应用价值。; 适合人群:具备一定Matlab编程能力,从事无人机控制、智能交通、自动化或相关领域研究的科研人员及研究生;对路径规划、多智能体协同、避障算法感兴趣的技术人员。; 使用场景及目标:①用于多无人机系统在复杂动态环境下的协同任务执行,如搜救、巡检、编队飞行等;②为研究人员提供可复现的Matla动态环境下多无人机系统的协同路径规划与防撞研究(Matlab代码实现)b代码框架,支持进一步算法改进与对比实验;③帮助理解协同路径规划与防撞机制的设计思路与实现细节。; 阅读建议:建议结合提供的Matlab代码进行逐模块分析,重点关注路径规划算法与防撞逻辑的实现方式,配合仿真结果加深理解;可在此基础上扩展不同环境场景或引入更复杂的动力学模型以提升实用性。
内容概要:本文详细介绍了一个基于Java和Vue的物联网冷链仓储监控与预警平台的设计与实现,涵盖了从项目背景、目标、系统架构、功能模块、数据库设计、前后端代码实现到部署应用的完整开发流程。平台通过物联网技术实现对冷链仓库环境参数(如温度、湿度、气体浓度)的实时采集与智能监控,结合云端大数据分析与AI预警算法,提供多级预警、设备联动、可视化大屏、报表导出等功能,支持生鲜食品、医药疫苗、化工危险品等多个行业的冷链管理需求。系统采用Spring Boot + Vue的前后端分离架构,具备高可扩展性、安全合规性和跨平台接入能力。; 适合人群:具备Java和Vue开发基础的中高级研发人员,熟悉Spring Boot、MySQL、RESTful API及前端框架的开发者,以及从事物联网、智能仓储、冷链物流等相关领域的技术人员。; 使用场景及目标:①构建企业级冷链仓储监控系统,实现实时数据采集与异常预警;②学习大型项目全栈开发流程,掌握前后端协同、数据库设计与API规范;③应用于医药、食品、化工等行业,提升仓储管理的智能化、数字化水平,保障货品质量安全。; 阅读建议:建议结合文中提供的完整代码、数据库脚本和API接口文档进行实践操作,重点关注系统架构设计、物联网数据处理流程及前后端交互逻辑,建议在本地或云环境部署项目以深入理解其运行机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值