热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

AndroidArchitectureComponents学习笔记

#前言AndroidArchitectureComponents是谷歌在GoogleIO2017发布的。官方的描述:https:developer.android.google.c



#前言

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》



推荐阅读
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 资源推荐 | TensorFlow官方中文教程助力英语非母语者学习
    来源:机器之心。本文详细介绍了TensorFlow官方提供的中文版教程和指南,帮助开发者更好地理解和应用这一强大的开源机器学习平台。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • ASP.NET MVC中Area机制的实现与优化
    本文探讨了在ASP.NET MVC框架中,如何通过Area机制有效地组织和管理大规模应用程序的不同功能模块。通过合理的文件夹结构和命名规则,开发人员可以更高效地管理和扩展项目。 ... [详细]
  • Startup 类配置服务和应用的请求管道。Startup类ASP.NETCore应用使用 Startup 类,按照约定命名为 Startup。 Startup 类:可选择性地包括 ... [详细]
  • 使用 GitHub、JSDelivr、PicGo 和 Typora 构建高效的图床解决方案
    本文详细介绍了如何利用 GitHub 仓库、JSDelivr CDN、PicGo 图床工具和 Typora 编辑器,搭建一个高效且免费的图床系统。通过此方案,用户可以轻松管理和上传图片,并在 Markdown 文档中快速插入高质量的图片链接。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • Redux入门指南
    本文介绍Redux的基本概念和工作原理,帮助初学者理解如何使用Redux管理应用程序的状态。Redux是一个用于JavaScript应用的状态管理库,特别适用于React项目。 ... [详细]
  • 构建基于BERT的中文NL2SQL模型:一个简明的基准
    本文探讨了将自然语言转换为SQL语句(NL2SQL)的任务,这是人工智能领域中一项非常实用的研究方向。文章介绍了笔者在公司举办的首届中文NL2SQL挑战赛中的实践,该比赛提供了金融和通用领域的表格数据,并标注了对应的自然语言与SQL语句对,旨在训练准确的NL2SQL模型。 ... [详细]
  • 在 Flutter 开发过程中,开发者经常会遇到 Widget 构造函数中的可选参数 Key。对于初学者来说,理解 Key 的作用和使用场景可能是一个挑战。本文将详细探讨 Key 的概念及其应用场景,并通过实例帮助你更好地掌握这一重要工具。 ... [详细]
  • 在Java中,this是一个引用当前对象的关键字。如何通过this获取并显示其所指向的对象的属性和方法?本文详细解释了this的用法及其背后的原理。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 本文详细介绍了MySQL数据库中的Bin Log和Redo Log,阐述了它们在日志记录机制、应用场景以及数据恢复方面的区别。通过对比分析,帮助读者更好地理解这两种日志文件的作用和特性。 ... [详细]
  • ssm框架整合及工程分层1.先创建一个新的project1.1配置pom.xml ... [详细]
author-avatar
mqfcu123
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有