Android 项目必备(四十五)-->2023 年如何构建 Android 应用程序

news2024/12/27 2:54:26

Android 是什么

Android 是一种基于 Linux 内核并由 Google 开发的开源操作系统。它用于各种设备包括智能手机、平板电脑、电视和智能手表。

目前,Android 是世界上移动设备使用最多的操作系统; 根据 statcounter 的一份最近 12 个月的样本报告;Android 的市场份额为71.96%。

Kotlin

Kotlin 是由 JetBrains 开发的一种编程语言。由谷歌推荐,谷歌于 2017 年 5 月正式宣布 Kotlin 作为 Android 开发语言。它是一种与 Java 兼容并可以运行在 JVM 上的现代编程语言这使得它在 Android 应用程序开发中的采用速度非常快。
在这里插入图片描述
不管你是不是 Android 新手,你都应该把 Kotlin 作为你的首选,不要逆水行舟 Google 在 Google I/O 2019上宣布了这种做法。有了Kotlin,你将可以使用所有现代语言的特性包括协程的强大功能和使用为 Android 生态系统开发的现代库。

学习资料 :

  • Kotlin 文档

Jetpack Compose

Jetpack Compose 是 Android 推荐的用于构建原生 UI 的现代工具包。它简化并加速了 Android 上的 UI 开发。
在这里插入图片描述
Jetpack Compose 是 Android Jetpack 库的一部分。使用 Kotlin 编程语言轻松创建原生用户界面。此外,它还与其他 Android Jetpack 库,例如 LiveData 和 ViewModel集成,以便更轻松地构建响应式和可维护的 Android 应用程序。

一些主要功能包括:

  1. 声明式用户界面;
  2. 可定制的小部件;
  3. 易于与现有代码集成;
  4. 实时预览;
  5. 改进的性能。

学习资料:

  • Jetpack Compose 文档
  • Jetpack Compose 路线图
  • Jetpack Compose 课程
  • Compose 到 Kotlin 兼容性映射

Material Design

Material Design 是一个适应性强的指南、组件和工具系统。支持用户界面设计的最佳实践。在开源代码的支持下,Material Design 简化了设计人员和开发人员之间的协作,并帮助团队快速构建精美的产品。
在这里插入图片描述
学习资料:

  • Material Design 官网

Clean Arch

它基于通过将软件划分为层来实现职责分离。
在这里插入图片描述

特征

  1. 独立于框架
  2. 可测试
  3. 独立于用户界面
  4. 独立于数据库
  5. 独立于任何外部机构
  6. 依赖规则

Android 中的 Clean Arch
在这里插入图片描述

学习资料:

  • 作者博客

Presentation Layer 的架构模式

架构模式是一种更高级别的策略。旨在帮助设计软件架构,其特点是在可重用框架内为常见架构问题提供解决方案。架构模式类似于设计模式,但它们的规模更大并且解决更多的全局问题。例如系统的整体结构、组件之间的关系以及数据的管理方式。

  • MVC
    刚接触编程,相信第一个遇到的框架就是 MVC ,不管你经意还是不经意写出来的 Android 程序他就是 MVC 框架,只不过是 MVC 框架的某一个变种(最混乱的那种)。Android 系统本身就根据 MVC 建造的。

mvc.jpg

  • MVP
    MVP 全称:Model-View-Presenter ;MVP 是从经典的模式 MVC 演变而来,它们的基本思想有相通的地方:Controller/Presenter 负责逻辑的处理,Model 提供数据,View 负责显示。
    mvp.jpg

  • MVVM
    MVVM 是 Model-View-ViewModel 的简写。它本质上就是 MVC 的改进版。MVVM 就是将其中的 View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。
    MVVM 模式中,一个 ViewModel 和一个 View 匹配,它没有 MVP 中的 IView 接口,而是完全的和 View 绑定,所有 View 中的修改变化,都会自动更新到 ViewModel 中,同时 ViewModel 的任何变化也会自动同步到 View 上显示。
    在 Android 中 DataBinding 帮助我们实现 MVVM,在 XML 进行数据绑定,增加了 XML 的重量,不再像以前那样仅仅是布局,均衡了各部分的职责。
    MVVM.png

  • MVI
    MVI 与 MVVM 很相似,其借鉴了前端框架的思想,更加强调数据的单向流动和唯一数据源,架构图如下所示
    在这里插入图片描述

不管是 MVC、MVP、MVVM 还是 MVI,主要就是 View 和 Model 之间的交互关系不同

  • MVI 的核心是 数据的单向流动
  • MVI 使用kotlin flow可以很方便的实现 响应式编程
  • MVI 整个 View 只依赖一个 State 刷新,这个 State 就是 唯一可信数据源

学习资料:

  • Android 架构指南

依赖注入

依赖注入是一种软件设计模式,它允许客户端从外部源获取其依赖项,而不是自己创建它们。它是一种用于在对象及其依赖项之间实现控制反转 (IoC) 的技术。

学习资料:

  • Hilt ❤️
  • Dagger

模块化

模块化是一种软件设计技术,它允许您将应用程序划分为独立的模块,每个模块都有自己的功能和责任。

模块化的好处:

  • 可重用性
  • 严格的可见性控制
  • 可定制的交付
  • 可扩展性
  • 易于维护
  • 易于测试
  • 架构改进
  • 改善协作
  • 构建时间

网络

  • OkHttp
  • Retrofit

序列化

图片加载

react及线程管理

本地存储

测试

自适应布局

在这里插入图片描述

性能优化

在这里插入图片描述

应用内更新

在这里插入图片描述

应用内评论

在这里插入图片描述

辅助功能

在这里插入图片描述

安全

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/465070.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ 编程笔记(本人出品,必属精品)

文章目录 Part.I IntroductionChap.I 快应用 Part.II C 基础Chap.I 一些待整理的知识点Chap.I 常用的库或类 Part.III 杂记Part.X Others WorkChap.I 大佬的总结Chap.II 大佬的轮子 Part.I Introduction 前言:C 用的人还是比较多的,主要是它比较快并且面…

2023-4-26-C++11新特性之正则表达式

🍿*★,*:.☆( ̄▽ ̄)/$:*.★* 🍿 💥💥💥欢迎来到🤞汤姆🤞的csdn博文💥💥💥 💟💟喜欢的朋友可以关注一下&#xf…

太为难我了,阿里面试了7轮...

前言 今年的大环境非常差,互联网企业裁员的现象比往年更严重了,可今年刚好是我的第一个“五年计划”截止的时间点,说什么也不能够耽搁了,所以早早准备的跳槽也在疫情好转之后开始进行了。但是,不得不说,这…

SOLIDWORKS认证考试流程

一、SOLIDWORKS认证考试前的准备工作 1、检查电脑硬件设备是否可以正常使用,如键盘鼠标等。 2、检查Solidworks软件是否可以正常使用。 3、关闭电脑所有杀毒软件。 4、检查电脑网络(外网)是否正常。 5.请联系我们获取考试系统软件安装包。…

redis面试题(二)附答案

书接上回,接着分享面试题,最近开发了几个小伙伴的项目,耽误更新了,来点干货,表示歉意。大家有需求也可以找小编。 2、缓存穿击 业务通常会有几个数据会被频繁地访问,比如秒杀活动,这类被频地访…

好程序员:前端JavaScript全解析——Canvas绘制形状(上)

●今天,我们来通过 canvas 提供的方法开绘制一些简单的形状绘制矩形 绘制基础矩形。下面一起看看好程序员老师的讲解吧~ ●语法 : 工具箱.rect( 矩形起点 x 轴坐标, 矩形起点 y 轴坐标, 矩形宽度, 矩形高度 ) // 0. 获取到页面上的 canvas 标签元素节点 const canva…

Camtasia2023简体中文标准版免费更新下载

Camtasia专业的 屏幕录制和视频剪辑软件3000多万专业人士在全球范围内使用Camtasia展示产品,教授课程,培训他人,以更快的速度和更吸引人的方式进行沟通和屏幕分享。使您在Windows和Mac上进行录屏和剪辑创作专业外观的视频变得更为简单。 Camt…

Vue3 element-plus el-select 无法选中,又不报错

html 结构 <el-form :model"conditionForm"ref"conditionForm"label-width"100px" class"demo-ruleForm"><el-selectv-model"conditionForm.personnel"multipleplaceholder"Select"style"width: 2…

知网导入EndNote

首先进入知网&#xff0c;搜索你想要找的期刊论文。 选择EndNote 点击导出 浏览器自动下载以txt为后缀的文件 导入到EndNote中

【C++】异常,你了解了吗?

在之前的C语言处理错误时&#xff0c;会通过assert和错误码的方式来解决&#xff0c;这导致了发生错误就会直接把程序关闭&#xff0c;或者当调用链较长时&#xff0c;就会一层一层的去确定错误码&#xff0c;降低效率&#xff0c;所以c针对处理错误&#xff0c;出现了异常&…

ChatGPT写小论文

ChatGPT写小论文 只是个人对写小论文心得?从知乎,知网自己总结的,有问题,可以留个言我改一下 文章目录 ChatGPT写小论文-1.写论文模仿实战(狗头)0.论文组成1.好论文前提:2.标题3.摘要4.关键词5.概述6.实验数据、公式或者设计7.结论&#xff0c;思考8.参考文献 0.模仿1.喂大纲…

【云原生】Dockerfile制作WordPress镜像,实现Compose + K8s编排部署

文章目录 &#x1f479; 关于作者前言环境准备目录结构 dockerfile制作镜像yum 脚本Dockerfile-mariadb 镜像Dockerfile-service 镜像docker compose 编排 K8s部署svcdeploy ✊ 最后 &#x1f479; 关于作者 大家好&#xff0c;我是秋意零。 &#x1f608; CSDN作者主页 &…

lambda的toMap是不是要注意点,线上事故

异常回顾 先看代码&#xff1a; dbTaxiDrivers.ifPresent((drivers) -> { map.putAll(drivers.stream() .collect(Collectors.toMap(TaxiDriverInfo::getOperationId, item -> item))); }); 相信很多为了减少2层for循环&#xff0c…

✨✨✨ ❃ ♕ ꕥ Xpath解析html获取表情符号,丰富你的文章 ꧁ ꧂꧁ ꧂

✨✨✨ ❃ ♕ ꕥ Xpath解析html获取表情符号&#xff0c;丰富你的文章 ꧁ ꧂꧁ ꧂ 1. 推荐几个好玩的表情符号网站2. xpath解析html获取表情3. xpath解析html源码3.1 parse_li.py3.2 symbol2.html 参考 1. 推荐几个好玩的表情符号网站 &#x1f495; &#x1f9da; &#x1f6…

让科幻照进现实,未来出行革命

在“新四化”&#xff08;电动化、网联化、智能化、共享化&#xff09;和“碳中和、碳达峰”双碳目标下&#xff0c;中国汽车产业正经历着前所未有之大变局。作为“智能化”核心之一的自动驾驶&#xff0c;在监管、技术和商业化方面持续积累、不断完善&#xff0c;即将迈入发展…

案例1:Java超市管理系统设计与实现开题报告

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

浏览器【控制台】的小妙招-dom复制

了解前端开发的朋友应该对浏览器的控制台非常熟悉&#xff0c;毕竟日常里除了wife就是跟浏览器相处的最久了。 1、唤出控制台 打开一个网页&#xff1a; 按下键盘【F12】或者鼠标在网页任意位置【右键- 检查】&#xff0c;即可唤出浏览器的【控制台】 2、日常开发使用之【复制…

QuickTime Player + BlackHole解决Mac不能录内部声音

背景 在用mac录制屏幕时&#xff0c;发现不能录入电脑内的声音。 App Store中有一些收费的屏幕录制软件&#xff08;也需要安装特定的虚拟声卡&#xff09;。 现在实现完全免费的屏幕录制&#xff0c;QuickTime Player BlackHole组合&#xff0c;QuickTime Player是mac自带…

Android 12系统源码_CarService(一)CarService的基本架构

前言 1、Google官网上是这样介绍汽车架构的。 Car App&#xff1a;包括OEM和第三方开发的AppCar API&#xff1a;内有包含 CarSensorManager 在内的 API。位于 /platform/packages/services/Car/car-lib。CarService&#xff1a;系统中与车相关的服务&#xff0c;位于 /platfo…

报错记录:构造方法获取不了@Value的值,问题刨析与解决方案

报错记录&#xff1a;构造方法获取不了Value的值&#xff0c;问题刨析与解决方案 有时我们需要在构造函数中初始化属性&#xff0c;之前老的项目是用的I/O流来获取配置文件的值&#xff0c;目前配置转为线上&#xff0c;使用Apollo来获取值&#xff0c;由于获取Apollo的值被封装…