JetPack系列:001-JetPack概要介绍

文章目录

  • 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 themeSurface(color = MaterialTheme.colorScheme.background) {Text(text = "Hello World")}}}}
}

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

4. 内容总结

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

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

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

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

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

相关文章

趣味工具箱小程序源码

趣味工具箱小程序源码,支持功能去水印,精选壁纸,图片压缩,文字生成二维码,图片加水印,模拟来电,手持弹幕,掷骰子…等 使用小工具,一个小程序有几十个功能。 源码下载&am…

面试打底稿⑥ 项目一的第二部分

简历原文 抽查部分 计算运费模块板块扩展性优化,采用责任链模式,实现不同地区间寄件的运费模板扩展的优化,为模块解耦,提高了系统的扩展性 短信模块设计,设计了短信发送数据模板的数据化存储,规范了发送短…

uniapp微信小程序蓝牙连接与设备数据对接

蓝牙连接并通信方法封装大致步骤。 初始化蓝牙并搜索;获取并启用service服务;数据读取和监听设备返回数据 需要使用uniapp官方提供api: // 关闭蓝牙 uni.closeBluetoothAdapter({}) // 打开蓝牙 uni.openBluetoothAdapter({}) // 搜索附近…

服务器or虚拟机安装SSH和虚拟机or服务器设置远程服务权限

第一步 服务器/虚拟机安装SSH工具,这是外部SSH终端连接服务器/虚拟机的第一步! sudo apt update && sudo apt upgrade#更新apt sudo apt install openssh-server#安装SSH工具 service ssh status#查看SSh运行状态 sudo systemctl enable --now ssh#运行SSH工具第二步…

Pytorch-学习记录-1-Tensor

1. 张量 (Tensor): 数学中指的是多维数组; torch.Tensor data: 被封装的 Tensor dtype: 张量的数据类型 shape: 张量的形状 device: 张量所在的设备,GPU/CPU requires_grad: 指示是否需要计算梯度 grad: data 的梯度 grad_fn: 创建 Tensor 的 Functio…

Google Cloud dataflow streaming job简介

简单介绍 首先 gcp 的dataflow 是1个ETL 组件, 它是基于Apache beam的 Apache beam 是1个较新的开源ETL 框架。 对于我们常用的ETL tool Spring batch 有下面的区别 spring batch 更偏向batch (后台处理)的ETL, 而apache beam 同时支持bat…

[python 刷题] 3 Longest Substring Without Repeating Characters

[python 刷题] 3 Longest Substring Without Repeating Characters 题目: Given a string s, find the length of the longest substring without repeating characters. 这到提要求找的是最长的,没有重复符号的子字符串 解题思路是用双指针哈希表&…

mysql MVCC(多版本并发控制)理解

最近看MVCC相关资料,这边做一个记录总结,方便后续理解。 目录 一、MVCC相关概念 二、MVCC实现原理 1.隐藏字段 2.undo log 3.Read View 4.MVCC的整体处理流程 5. RC,RR级级别下的innoDB快照读有什么不同 6.总结 一、MVCC相关概念 1…

华为云云耀云服务器L实例评测|部署私有网盘 Nextcloud

华为云云耀云服务器L实例评测|部署私有网盘 Nextcloud 一、云耀云服务器L实例介绍1.1 云服务器介绍1.2 产品规格1.3 应用场景 二、云耀云服务器L实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置 三、部署 Nextcloud3.1 Nextcloud 介绍3.2 Docker 环境搭建3.3 Nex…

LeetCode 面试题 08.06. 汉诺塔问题

文章目录 一、题目二、C# 题解 一、题目 在经典汉诺塔问题中,有 3 根柱子及 N 个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。移动圆盘时受到以…

服务器的外网IP查阅方式

服务器的外网IP查阅方式 linux服务器查询外网ip地址,可以有以下三种方式查阅 查看服务器的外网IP 1、curl cip.cc IP : 183.1X.2XX.88 地址 : 中国 广东 深圳 运营商 : 电信 数据二 : 广东省深圳市 | 电信 数据三 : 中国广东省深圳市 | 电信 2、curl myip.ipip.n…

mysql面试题23:如果某个表有近千万数据,CRUD比较慢,如何优化?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:如果某个表有近千万数据,CRUD比较慢,如何优化? 当某个表存在近千万数据且CRUD(增删改查)操作比较慢时,可以考虑以下优化策略: 使用索引:索…

数百个下载能够传播 Rootkit 的恶意 NPM 软件包

供应链安全公司 ReversingLabs 警告称,最近观察到的一次恶意活动依靠拼写错误来诱骗用户下载恶意 NPM 软件包,该软件包会通过 rootkit 感染他们的系统。 该恶意软件包名为“node-hide-console-windows”,旨在模仿 NPM 存储库上合法的“node-…

Java中使用正则表达式

正则表达式 正则表达式(Regular Expression)是一种用于匹配、查找和替换文本的强大工具。它由一系列字符和特殊字符组成,可以用来描述字符串的模式。在编程和文本处理中,正则表达式常被用于验证输入、提取信息、搜索和替换文本等…

使用 Apache Camel 和 Quarkus 的微服务(一)

【squids.cn】 全网zui低价RDS,免费的迁移工具DBMotion、数据库备份工具DBTwin、SQL开发工具等 ​Apache Camel 绝非Java企业技术栈领域的新手。它由James Strachan在2007年创建,旨在实现著名的 "EIP 书"(由Gregor Hohpe和Bobby W…

2.5 数字传输系统

笔记: 针对这一节的内容,我为您提供一个笔记的整理方法。将内容按重要性、逻辑关系进行组织,再进行简化。 ## 2.5 数字传输系统 ### 背景介绍: 1. **早期电话网**:市话局到用户采用双绞线电缆,长途干线采…

汇总开源大模型的本地API启动方式

文章目录 CodeGeex2ChatGLM2_6BBaichuan2_13Bsqlcoder开启后测试 CodeGeex2 from fastapi import FastAPI, Request from transformers import AutoTokenizer, AutoModel import uvicorn, json, datetime import torch import argparse try:import chatglm_cppenable_chatglm_…

git stash详解

stash:保存现场 1.建议(规范) :在功能未没有开发完毕前,不要commit 2.规定(必须) : 在没有commit之前,不能chekcout切换分支 (不在同一个commit阶段) 如果还没…

缓存与数据库双写一致性问题解决方案

其实如果使用缓存,就会出现缓存和数据库的不一致问题,关键在于我们可以接受不一致的时间是多少,根据不同的需求采取不同的实现方案。 第一种:先更新数据库后更新缓存 做法简单,但是并发写情况下,会出现数…

Mac安装GYM遇到的一些坑

以下是遇到的一些问题 安装GitHub上说的直接 pip install gym成功了,但是运行实例报错没安装gym[classic_control],所以就全安装一下[all] 安装GitHub上说的直接 pip install gym成功了,但是运行实例报错没安装gym[classic_control]&#xff…