
jetpack
文章平均质量分 92
分析jetpack组件的源码
hzulwy
技术嘛!最重要的是自己理解,然后才是分享
展开
-
Android全新UI框架之Compose状态管理与重组
Compose采取了声明式UI的开发范式。在这种范式中,UI的职责仅作为数据状态的反应。如果数据状态没有变化,则UI永远不会自行改变。如果把Composable的执行看作是一个函数运算,那么状态就是函数的参数,生成的布局就是函数的输出。原创 2024-02-24 16:14:35 · 2166 阅读 · 2 评论 -
Android全新UI框架之Compose组件渲染流程
在传统View体系中,组件渲染分为三步:测量、布局和绘制。Compose也遵循这样的分层设计,将组件渲染流程划分为组合、布局与绘制三个阶段。对于一般的组件都是正常经历组合->布局->绘制三个阶段来生成帧画面的,当然也存在特例,LazyColumn、LazyRow、等组件的子项合成可以延迟到这类组件的布局阶段进行,这是由于这类组件的子项组合需要依赖这类组件在布局阶段所能提供的一些信息。原创 2024-02-23 11:05:58 · 1757 阅读 · 0 评论 -
Android全新UI框架之常用ComposeUI组件
在Compose中,每个组件都是一个带有@Composable注解的函数,被称为Composable。Compose已经预置了很多基于MD设计规范的Composable组件。在布局方面,Compose提供了Column、Row、Box三种布局组件(感觉跟flutter差不多),类似于传统视图开发中的LinearLayout(Vertical)、LinearLayout(Horizontal)、RelateiveLayout,可以满足各类产品的常见布局需求。原创 2024-02-21 18:49:55 · 3321 阅读 · 0 评论 -
Android全新UI框架之Jetpack Compose入门基础
以往,我们开发Android原生页面的时候,通常是在xml中画相关的UI控件,然后在activity中通过findViewById拿到相关的控件对象,接着根据业务需求调用该控件对象的相关API方法。在传统视图体系中由View与ViewGroup构成视图树,而Compose中也有同样一颗视图树,它由LayoutNode构成,由Composition负责管理。由于Compose在编程范式上与传统视图体系有着根本的不同,在开始深入学习Compose之前,有必要对Compose API的设计原则做一个介绍。原创 2024-02-20 18:04:45 · 1665 阅读 · 0 评论 -
使用Hilt搭建隔离层架构
在我们的日常编码的过程中,常常会遇到这种需求。例如:这个版本我们使用okhttp作为网络通信库,如果下个版本我们想要用volley作为网络通信库,那该怎么办呢?我们总不能对使用okhttp的地方一个个改成volley吧!这样得要改到猴年马月啊!因此,通常情况下,我们接入第三方库的时候总会有一个隔离层,方便我们日后切换不同的第三方库。接下来,笔者将手把手演示如何搭建一个隔离层。原创 2022-12-11 20:25:50 · 630 阅读 · 0 评论 -
DataBinding使用与原理分析
在以前的android开发中,布局文件通常只负责 UI控件的布局工作。页面通过 setContentView()方法关联布局文件,再通过 UI控件的 id 找到控件,接着在页面中通过代码对控件进行操作。相信,上面这几个步骤是雷打不动的模板代码。可以说,页面承担了绝大部分的工作量,为了减轻页面的工作量,Google在 2015年的I/O 大会上提出了 DataBinding。 DataBinding 的出现让布局文件承担了部分原本属于页面的工作,也使页面与布局文件之间的耩合度进一步降低。DataBindin原创 2022-06-20 23:34:42 · 1395 阅读 · 0 评论 -
jetpack组件之Room原理分析
Google在没有推出Room组件之前,如果我们想要操作数据库,android是采用sqlite作为数据库存储。有使用过sqlite的读者应该十分清楚,sqlite的使用相当的复杂,而且代码写起来既繁琐又容易出错。因此,各大开源社区便推出了各种ORM库来简化sqlite的操作。而作为Google的亲儿子Room也是对sqlite的一层抽象。它使用了APT机制,通过注解的方式在编译阶段生成sqlite代码,使开发者不需要写冗杂的sqlite代码,提高开发效率。想要了解一个东西的用法,我们首先要会用它。sqli原创 2022-06-18 22:16:10 · 1228 阅读 · 0 评论 -
深入理解LiveData组件的工作原理
上面这段话,笔者是从jetpack官网上抄下来的。从中我们可以得知下面几点(重中之重):接下来,我们从上面三个点来出发探究LiveData的工作原理。想要理解一个东西的工作原理,我们首先要会使用它。LiveData的用法十分简单,大家可以参考下例:我们现在设想下,下面3种情景:接下来,我们进入重头戏,解读LiveData的工作原理首先,我们看下LiveData的observe方法。首先,它会检查是不是主线程。记不记得,上面的案例,当我们在异步线程时直接setValue会报错,错误信息就是从这里报出来原创 2022-06-17 00:48:35 · 650 阅读 · 0 评论 -
WorkManager
Android的后台机制是一个很复杂的问题。印象中与后台相关的API变更大概是这些:从4.4系统开始AlarmManager的触发时间由原来的精准变为不精准,5.0系统中加入了JobScheduler来处理后台任务,6.0系统中引入了Doze和App Standby模式用于降低手机被后台唤醒的概率,从8.0系统开始直接禁用了Service的后台功能,只允许使用前台Service。当然,还有许许多多小细节的修改。这么频繁的功能和API变更,让开发者就很难受了,到底该如何编写后台代码才能保证应用程序在不同系统原创 2021-03-01 00:25:16 · 591 阅读 · 0 评论 -
Lifecycle用法与源码分析(手把手教你如何看源码)
首先介绍下,什么是Lifecycle。想要知道Google为什么没事要弄一个Lifecycle出来就不得不提及软件开发中一个永恒的话题——解耦。在android应用程序开发中,解耦很大程度上表现为系统组件(四大组件)的生命周期与普通组件之间的解耦。普通组件在使用过程中通常需要依赖于系统组件的生命周期。有时候,我们不得不在系统组件的生命周期回调方法中,主动对普通组件进行调用或控制。因为普通组件无法主动获知系统组件的生命周期事件。举个例子,我们经常需要在页面的onCreate方法中对组件进行初始化,在onP原创 2022-04-17 01:49:10 · 539 阅读 · 0 评论