Jetpack:001-Jetpack概要介绍

news2024/9/27 19:16:59

文章目录

  • 1. 概念介绍
  • 2. 主要内容
    • 2.1 框架库
    • 2.2 UI界面库
  • 3. 核心思想
  • 4. 内容总结

在这里插入图片描述

本章回是一起Talk AndroidJetpack吧专栏的第一章回,本章回中主要介绍Jetpack的基本概念和编程思想,同时也会介绍它的基础知识。闲话休提,请我们一起Talk Android Jetpack吧

1. 概念介绍

Jetpack是Android新推出的库,该库包含框架和UI,目的在于加强框架设计,减去模板代码,提升开发效率。

我们在一起Talk Android专栏中介绍过它里面的内容,比如ViewBinding,LiveData等。本专栏除了介绍这些库外还会介绍它新推出的UI库:Jetpack Compose,以及配合它们使用的Kotlin编程语言。

2. 主要内容

Jetpack是在Android原生内容的基础上提供了高效的库和UI,接下来我们分别介绍这两个方面的知识。

2.1 框架库

它把我们常用的内容封装成了库,比如Activity,Fragment.有了这些库后我们就可以更加方便地使用库中提供的功能,比如在项目中创建Activity时不再向之前一样继承AppCompatActivity,而是继承ComponentActivity,该类就是库中的内容,它包含ViewModel,Lifecycle等内容,有了这些内容可以方便我们管理页面中的数据,更好地管理页面的周期。

Jetpack中其它的库,我们就不一一介绍了,大家可以参考文档。此外,这些库的兼容性非常强,支持Adnroid5以上的版本,可以说兼容了当前市场上99%以上的Android设备。

2.2 UI界面库

Jetpack中的UI界面通过compose库提供,它和以前UI界面中的View完全不同,而是使用可组合函数(Composable注释标记的函数),这些可组合函数可以相互嵌套使用,进而组成一个UI界面。虽然UI界面的载体仍然是Activity,但是界面中的布局和组件已经不再是xml文件以及各种View及其子View.有看官说没有xml文件后如何调整界面?官方提供了preview注解,在可组合函数前使用该注解后就可实时地预览界面中的UI,十分方便。

这种UI界面通过状态来管理,把UI绑定到一个状态上,如果状态有变化了,框架会自动去更新UI。

3. 核心思想

Jetpack的核心思想就是提供统一的数据管理和界面管理方式,这样有助于代码解耦,减少冗余代码,提高程序性能。这种思想也叫声明式框架思想,最早在RN框架中使用,现在几乎所有移动平台都在使用这种声明式框架。下面是使用Jetpack编译的HelloWorld程序,请大家参考:

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            CookbookTheme {
                // A surface container using the 'background' color from the theme
                Surface(
                    color = MaterialTheme.colorScheme.background
                ) {
                    Text(text = "Hello World")
                }
            }
        }
    }
}

上面的代码中使用Activity当作页面载体,页面中只有一个可组合函数Text,它和TextView组件的功能相同,通过该函数在页面上显示"Hello World".我在这里就不演示程序的运行结果了,建议大家自己动手去实践。

4. 内容总结

最后,我们对本章回的内容做一个归纳性的总结,详细如下:

  • Jetpack是一系列库的集合,这些库包含框架库和UI库;
  • 框架库用来提库数据和界面管理,比如LiveData,Activity;
  • UI库主要使用可组合函数来描述界面,通过状态来更新界面;
  • UI库的核心思想是声明式UI框架的思想;

看官们,关于Jetpack的基本内容就介绍这些,欢迎大家在评论区交流与讨论!

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

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

相关文章

【Vue面试题十三】、Vue中的$nextTick有什么作用?

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:Vue中的$nextTick有什么…

计算机视觉处理的开源框架

计算机视觉是一门涉及图像和视频分析的领域,有许多开源的框架和库可用于构建计算机视觉应用程序。以下是一些常见的计算机视觉开源框架及其特点,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合…

GNU和Linux的关系、 Linux的发行版本、CentOs和RedHat的区别

GNU和Linux的关系 其实,我们通常称之为的"Linux"系统,相对更准确的名称应该称为“GNU/Linux”系统! 一个功能完全的操作系统需要许多不同的组成部分,其中就包括内核及其他组件;而在GNU/Linux系统中的内核就…

什么是成分分析?成分分析检测包括哪些?

成分分析:指通过微观谱图及激光飞秒检测方法对产品或样品的成分进行分析,对各个成分进行定性定量分析的技术方法。 成分分析技术主要用于对未知物、未知成分等进行分析,通过成分分析技术可以快速确定(最快的为激光飞秒检测通过观测分子、原子、电子、原…

【Mybatis源码】IDEA中Mybatis源码环境搭建

一、Mybatis源码源 在github中找到Mybatis源码地址:https://github.com/mybatis/mybatis-3 找到Mybatis git地址 二、IDEA导入Mybatis源码 点击Clone下载Mybatis源码 三、选择Mybatis分支 选择Mybatis分支,这里我选择的是3.4.x分支

点云分割segmentation

点云分割是根据空间、几何和纹理等特征对点云进行划分,使得同一划分区域内的点云拥有相似的特征 。点云的有效分割往往是许多应用的前提。例如,在逆向工程CAD/CAM 领域,对零件的不同扫描表面进行分割,然后才能更好地进行孔洞修复、…

Yocto Project 编译imx-第1节(下载和编译)

Yocto Project 编译imx-第1节(下载和编译) 前言说明参考文章版本说明Ubuntu 系统说明和建议必备软件安装设置Git用户名和密码解决git报错使用FastGithub 获取repo获取Yocto项目设置Yocto源获取Yocto版本(https://source.codeaurora.org废弃&a…

【C++从0到王者】第三十六站:哈希

文章目录 一、unordered系列容器二、unordered_set三、unordered_map四、unordered_set与set的比较五、各种查找的比较六、哈希函数1.哈希函数概念与哈希冲突2.常见哈希函数 七、解决哈希冲突1.闭散列---开放定址法2.开散列---拉链法/哈希桶 一、unordered系列容器 在C98中&…

在校大学生想从事网络安全工程师,来听听过来人的经验,你会少走很多弯路

大家好!一直以来都有一些大学生粉丝私聊向我“取经”,可以看得出来很多人对前路多多少少都有些迷茫,我把大家的问题总结了一下,并对每个问题都做了我自己的见解,高频出现的问题有以下几个: 1.国内程序员的…

算法错题簿(持续更新)

自用算法错题簿,按算法与数据结构分类 python1、二维矩阵:记忆化搜索dp2、图论:DFS3、回溯:129612964、二叉树:贪心算法5、字符串:记忆化搜索6、01字符串反转:结论题7、二进制数:逆向…

车载通信架构 —— DDS协议介绍

车载通信架构 —— DDS协议介绍 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和…

如何实现mac系统远程控制window

Mac和Windows是两个广泛使用的操作系统,它们有着各自的特点和优势。有时候,可能需要在Mac系统上进行工作,但仍然需要远程访问和控制Windows系统。幸运的是,有几种方法可以实现这一目标。 一、远程桌面协议(RDP&#xf…

yarn 安装、常用命令、与npm命令区别

一、下载安装 npm install yarn tyarn -g安装完成之后检查版本 yarn --version // 1.22.17linux环境下可以配置yarn的软链 ln -s /usr/local/nodejs/node-v16.16.0-linux-x64/bin/yarn /usr/local/bin/二、配置Yarn 配置源 # tuonioooo yarn config set registry https://…

不平衡电网电压下虚拟同步发电机VSG控制策略-实现不平衡电压下控制三相电流平衡(Simulink仿真实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

解决ROS2报错colcon build: Duplicate package names not supported

执行colcon build命令错:ERROR:colcon:colcon build: Duplicate package names not supported。 解决办法:按照提示在src目录下删除多余的目录;

隔离上网,安全上网

SDC沙盒数据防泄密系统(安全上网,隔离上网) •深信达SDC沙盒数据防泄密系统,是专门针对敏感数据进行防泄密保护的系统,根据隔离上网和安全上网的原则实现数据的代码级保护,不会影响工作效率,不…

三个主要降维技术对比介绍:PCA, LCA,SVD

随着数据集的规模和复杂性的增长,特征或维度的数量往往变得难以处理,导致计算需求增加,潜在的过拟合和模型可解释性降低。降维技术提供了一种补救方法,它捕获数据中的基本信息,同时丢弃冗余或信息较少的特征。这个过程…

11-Webpack模块打包工具

01.什么是 Webpack 目标 了解 Webpack 的概念和作用,以及使用 讲解 Webpack 是一个静态模块打包工具,从入口构建依赖图,打包有关的模块,最后用于展示你的内容 静态模块:编写代码过程中的,html&#xf…

Git分支教程:详解分支创建、合并、删除等操作

GIT分支是Git中用于开发和管理代码的重要概念之一。每个分支都是一个独立的代码版本,可以在分支上进行修改和提交,而不影响主线(通常是master分支)上的开发工作。 分支的作用: 并行开发:多个开发人员可以…

vue3学习(一)---新特性

文章目录 vue3和vue2的区别重写双向数据绑定优化Vdom性能瓶颈patch flag 优化静态树 FragmentTree shaking组合式API写法 vue3和vue2的区别 重写双向数据绑定 vue2 基于Object.defineProperty()实现vue3 基于Proxy proxy与Object.defineProperty(obj, prop, desc)方式相比有以…