谷歌最支持的 Android 开发架构指南逆锋起笔关注共 3270字,需浏览 7分钟 ·2021-01-27 09:01 点击上方“逆锋起笔”,公众号回复 pdf领取大佬们推荐的学习资料程序员书库(ID:CodingBook)编译 链接地址:https://productcoalition.com/a-guide-to-googles-recommended-architecture-for-android-apps-8cfc1c774755就像所有软件一样,Android应用程序也应该遵循通用的架构规则和模式,没有遵循正确架构的Android应用程序往往会因为缺乏一致的设计而变得很难维护。考虑到良好架构的重要性,人们如何选择就变得尤其重要,在大多数情况下,我更推荐谷歌的标准架构作为Android应用程序的起点,然后随着应用程序变得越来越复杂,可以添加一些新的概念。那么谷歌推荐的Android应用开发架构指南是怎样的呢?很简单,以下是一些要遵循的规则:reactive使用viewmodel和LiveData使用存储库获取和缓存数据在本文中,我们将讨论当前正在使用的Android应用程序的通用体系结构的优缺点,从而帮助你更好的选择。什么才是好的软件架构?在专注于Android之前,我想先讨论一下不同软件架构的有效性。根据我的经验,无论平台如何,成功实现软件体系结构都需要三件事:简单如果架构的可变动部分过多,则无论是在概念上还是在技术上都难以使用,假设RxJava在项目中用作并发框架,这个单独的依赖关系意味着任何新加入项目的开发人员都需要了解RxJava,这并不是一件容易学习的事情。此外,它还可能会导致未来的设计和调试问题,随着复杂性的增加,问题也会变得复杂起来,架构的抽象程度越低,工程师就越容易跟上进度维护项目。可维护性这个原则的主要思想是尽可能少地依赖“外部时间”。例如,假设我们的应用程序是使用带有存储库模式架构的MVP开发的,如果存储库保存对某些特定于android的东西(如AsyncLoader)的直接引用,然后每个存储库类与AsyncLoader类耦合。AsyncLoader类是一个由谷歌维护的库,它在某种程度上已被弃用,这使得它的所有依赖项也在某种程度上被弃用。当使用的依赖项没有强大的社区支持,这种风险会变得更大,因为它们很可能被弃用,这种耦合很麻烦,并且随着时间的推移和兼容性问题出现,使项目的维护更加困难。灵活性这个原则主要是关于变更的便捷性。例如,应用程序的UI层能否独立于其业务逻辑或数据层,如果所有的东西都被塞进同一个片段中,这个项目将会变得十分脆弱,当实现新特性的时候,将功能分层是非常有益的,比如将业务逻辑从UI层剥离,这样当你需要改变应用程序的一部分的时候就不会影响其他部分。Android应用程序的流行架构MVC软件体系结构中最古老和最广泛使用的设计模式之一是MVC,它在视图(如何表示数据)、模型(如何构造数据)和控制器(如何处理用户交互)之间有很强的分离。大多数情况下,Android被设计成可以遵循MVC模式。然而,Android的MVC实现的问题是,Activity同时是视图和控制器,这违反了单一责任原则,这是这个架构的关键。MVPAndroid社区开始越来越多地利用MVP模式,在这个模式中,业务逻辑被定义在名为presenter的类中。1个view 对应一个presenter,事实证明,这种模式非常有效,因为业务逻辑很好地隔离了,View可以独立于presenter交换出来。MVVMMVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。当然这些事 ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。MVI对于更细粒度的方法,可以引入意图的概念。每个用户交互都是定义应用程序屏幕的意图集合的一个实例,屏幕上的每一个变化都被封装在另一个意图中,该意图从一个中心位置(如演示器、控制器或状态机)发回。这里的主要思想是提供一个单向数据流(UDF),其中数据和屏幕更改来自一个地方,但流向单个方向。谷歌推荐的Android应用架构在以上这些选项中,谷歌真正推荐的是什么?MVVM,下面就让我们深入了解一下MVVM工具集的基本构建块。关注公众号 逆锋起笔,回复 pdf,下载你需要的各种学习资料。JetpackJetpack是谷歌用于构建和架构Android应用程序的工具集。它由许多不同的库组成,帮助开发人员们摆脱自己编写这些工具的负担,最常用的组件有LiveData、ViewModel、Data Binding、Navigation Component和Room。MVVM作为UI层的响应式架构在MVVM的设置中,一个典型的屏幕由什么组成,在较低的层次上有一个View,Activity/Fragment,在它之上有一个视图模型,它暴露了活数据,除了视图模型,我们通常可以利用Room来本地存储数据的存储库。ViewModel作为第一个缓存层ViewModel是一种特殊的类,它为旋转屏幕时的常见问题提供了优雅的解决方案,每当屏幕旋转时,顶部的活动/片段就会被销毁并重新创建,视图中可见的数据也会丢失。这有一个很好的好处,即作为第一个缓存层,当ViewModel处于活动状态并创建了一个新视图时,该视图可以直接从ViewModel中获取数据,而不需要任何网络调用。LiveDataLiveData是一个数据持有类,它是一个特殊的类,它知道如何与生命周期所有者(如活动和片段)对话。LiveData最有用的地方在于,LiveData采用了观察者模式有关,LiveData是被观察者,当数据有变化时会通知观察者(UI)。LiveData还能够感知到组件的生命周期,当组件处于DESTROYED状态时,观察者对象会被清除掉。存储库作为数据源和第二层缓存层存储库有一个职责,那就是为视图模型提供数据。存储库可以很简单,它们可以从网络获取和传递数据,也可以在本地缓存和存储数据。一种常见的模式是从网络获取数据并将其缓存到本地,以减少网络调用的数量,并为用户提供脱机体验。数据库来源存储库可以在本地存储数据,就局部持久性而言有多种选择,Jetpack推荐Room,它负责创建SQLight表,并提供了存储和检索数据的简单方法网络来源在从网络获取数据时,谷歌推荐使用Retrofit库。它可以与协程和多种响应类型一起工作,如JSON、XML等。谷歌的Android应用架构做得很好,正如我们所讨论的,Android应用程序有多种架构。Google的主要建议支持MVVM,它利用LiveData和ViewModels之类的东西来解决Android应用程序面临的两个最常见的问题,逻辑和行为的正确使应用程序既灵活又易于维护。此外,Google通过其Jetpack指南提供了大量资源,(地址:https://developer.android.com/jetpack/guidehttps://developer.android.com/jetpack/guide)可帮助开发人员入门。从那里可以很容易地构建架构来支持项目需求,方法是对诸如依赖注入使用什么之类的东西进行决策。在此过程中,重要的是要记住要尽可能地简化。谷歌程序员 20 行代码送你一个“老婆”谷歌开源内部代码评审规范Google的面试题长啥样?看完被吊打!Google 出品的 Java 编码规范,强烈推荐,既权威又科学!男在谷歌,女友在亚马逊,晒出 2 人总收入,网友:好酸!点个『在看』支持下 浏览 21点赞 评论 收藏 分享 手机扫一扫分享分享 举报 评论图片表情视频评价全部评论推荐 谷歌宣布 Android 加入对 Rust 的支持!刘望舒0谷歌发布 Android 游戏开发工具包开发者全社区0全网最详细的谷歌插件开发小册前端壹栈0Android开发高效专业 负责靠谱 Android app开发接单了 微信x834712858Android 开发 ,开发速度快 。# Android开发便宜接单啦! 有大量第三方接入经验,开发速度快,界面洁癖,性价比极高的Android开发者来啦! 走过路过都是客,满不满足您进来聊聊~ NetBeans开发Android的插件这是一款在NetBeans中开发Android平台应用的插件。idea-androidIDEA的Android开发插件idea-android 是在 IDEA 集成开发环境中开发 Android 应用程序的插件。idea-androidIDEA的Android开发插件idea-android是在IDEA集成开发环境中开发Android应用程序的插件。Android 车载开发程序员Android0Android 架构大剖析程序员Android0点赞 评论 收藏 分享 手机扫一扫分享分享 举报