JetPack
文章平均质量分 86
Integrated Machine
这个作者很懒,什么都没留下…
展开
-
JetPack之DataBinding布局文件绑定及UI刷新原理
文章目录1. 项目结构说明2. DataBinding绑定解析——节点依赖关系3. DataBinding绑定解析——获取绑定4. DataBinding绑定解析——执行绑定5. DataBinding绑定解析——刷新UI1. 项目结构说明项目有三个moduel:app、business,其中app为空moduel,里面没有具体代码,business主要放业务相关的代码,又有两个目录home和baseui。在app moduel和baseui包和home包的build目录下生成的代码目录如下:可以看原创 2020-11-07 10:23:35 · 866 阅读 · 0 评论 -
JetPack之DataStore源码笔记
文章目录1. Preferences DataStore1.1. Preferences DataStore的创建1.2. Preferences DataStore的写入1.2.1. 迁移SharedPreference过程上一篇文章分析了SharedPreferences的原理和弊端,这篇文章主要分析DataStore的源码。根据官方文档的介绍,DataStore主要有一下优势:支持键值对和类型化对象的存储;数据存储采用protocol buffers,更节省资源;使用Kotlin协程以及Fl原创 2020-10-12 15:36:14 · 1323 阅读 · 0 评论 -
JetPack之WorkManager学习记录
文章目录1. 任务的启动2. OneTimeWorkRequest的链式组合3. 工作调度WorkManager主要是用来处理后台任务的,并且保证这些任务可以在App退出时在适当时机执行,实现这一目标主要是依靠:使用Room将任务以WorkSec为单元存储在本地;使用反射将Work类实例化,并执行其中定义的任务,保证了App退出时任务依然能得到执行。其中后台任务分为两类:立即执行的任务;限制的任务。WorkManager使用及介绍参考Exploring Jetpack: Schedul原创 2020-09-28 19:22:52 · 283 阅读 · 0 评论 -
JetPack之AppStartUp原理分析
文章目录1. 自动初始化源码分析2. 主动初始化源码分析对于冷启动的App,我们知道其启动过程中,ContentProvidor是先于Applycation初始化的,在Android 10的源码中可以验证: //ActivityThread.java private void handleBindApplication(AppBindData data) { //初始化ContentProvidor if (!data.restrictedBackupMode原创 2020-09-24 17:18:54 · 257 阅读 · 0 评论 -
JetPack之LiveData源码纪要
目录1. 添加观察者的方式1.1. observe(Observer)方式1.2 observeForever(Observer)方法2. 观察者的通知方式LiveData的官方定义:LiveData是一种可以在给定生命周期内被观察的数据承载类。1. 添加观察者的方式有两种方式添加观察者:通过observe(Observer)方法添加的观察者只有在生命周期拥有者活跃(处于STARTED或RESUMED状态)的时候才会接收到LiveData的修改通知,在生命周期拥有者进入DESTORUYED状态时会原创 2020-09-16 11:10:45 · 222 阅读 · 0 评论 -
JetPack之ViewModel的几点原理分析
目录1. ViewModel的存取设计1.1. ViewModelStore的提供1.2. Factory的提供1.3 ViewModel的存取2. SavedStateHandle保存数据原理2.1. 状态保存过程2.2. 状态恢复过程3. ViewModel的超长生命周期原理ViewModel有两个显著的优点:同一个Activity下的不同Fragment之间可以用ViewModel通信;ViewModel的生命周期极长,即使其LifecycleOwer销毁了ViewModel也依旧存活;第一原创 2020-09-14 01:05:45 · 677 阅读 · 0 评论 -
JetPack之Lifecycle观察者的实现方式解读
目录1. 生命周期拥有者2. 生命周期观察者2.1. FullLifecycleObserverAdapter实现方式2.2. SingleGeneratedAdapterObserver和CompositeGeneratedAdaptersObserver实现方式2.3 ReflectiveGenericLifecycleObserver实现方式1. 生命周期拥有者android中Activity和Fragment具有生命周期,在Lifecycle组件中用LifecycleOwner接口来定义具有生命原创 2020-09-11 11:02:37 · 582 阅读 · 0 评论 -
Navigation使用指南
概述Navigation跳转1.环境配置在app model下配置://build.gradleimplementation deps.navigation.fragment_ktximplementation deps.navigation.ui_ktx相关配置://versions.gradleversions.navigation = "2.1.0"def navigation = [:]navigation.fragment_ktx = "androidx.navigatio原创 2020-08-11 18:22:34 · 2371 阅读 · 0 评论 -
Navigation初始化NavHostFragment过程
Navigation初始化NavHostFragment过程Navigation初始化NavHostFragment过程1. MainActivity的初始化2. NavHostFragment的初始化2.1. 初始化NavHostController实例2.2. 调用NavHostController实例解析mGraphId2.2.1. Navigation初始化NavHostFragment过程在使用Navigation库是,其固定模式是在Activity的布局文件中会先放一个NavHostFragm原创 2020-08-04 16:54:44 · 7114 阅读 · 0 评论 -
Paging3加载网络数据指南
Paging加载网络数据指南配置依赖网络仓库1.PagingConfig2.PagingSource将数据流注入适配器PagingDataAdapter配置依赖在相应模块的build.gradle文件下配置: implementation deps.paging_runtime implementation deps.retrofit.gson implementation deps.okhttp_logging_interceptor implementation deps.原创 2020-07-21 20:52:02 · 3291 阅读 · 1 评论 -
Paging内部原理
Paging内部原理下拉刷新内部逻辑下拉刷新内部逻辑 当用户触发下拉刷新时,会调用PagingDataAdapter的reresh()方法,我们就从该方法切入,一步步看看内部的调用逻辑。首先,我们看一下函数时序图: ![![Alt]](https://img-blog.csdnimg.cn/20200716195809404.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6L原创 2020-07-17 17:43:05 · 2223 阅读 · 0 评论