Panthole

潘凌越的技术博客

Android学习笔记07-Android列表中的DiffUtils

一、背景Android列表使用了v7包下DiffUtils来计算新旧数据集的差异集合,再刷新页面上的指定坑位,以此避免因notifyDataSetChanged带来的掉帧,但我们不能抱着仅仅会用的思想,不能仅仅只知其然不知其所以然。所以写了篇文章来讲解Myers差分异算法 二、Diff的定义我们先简单定义一下什么是diff:diff就是目标文本和源文本之间的区别,也就是将源文本变成目标文本所......

Android学习笔记06-RecyclerView原理解析

一、LayoutPosition vs AdatperPosition adapter position: 从adpter角度来看,此position表示一个item在adapter数据里的位置。 layout position: 从layoutmanager角度来看, 此position表示一个item在上一次布局结束时在adapter数据中的位置,对应了用户在当前屏幕上所看到视图的位置(......

Android学习笔记05-Flutter Channel与原生代码互调用

一、关于 Flutter 的 ChannelFlutter 提供了 3 种 Channel 用于 Flutter 与 原生代码做交互,分别是: 类型 用途 MethodChannel 用于 Flutter 与 原生平台之间函数的互相调用 BasicMessageChannel 它传递的是字节数组,使用时自定义编解码器 EventChannel 用于 Flutter 与 原......

Android学习笔记04-Jetifier分析和应用

一、为什么会有Jetifier早年Android使用的support lib 已不再维护,官方推荐的的是Jectpack,也就是AndroidX libraries,但是两种基础库不兼容,主要是google团队对包名和命名空间进行了重构,也是下定了决心长痛不如短痛,但是对开发者来说,这种升级方式要命了,基础库包名变了,不光是自己的代码,所有用到的二方库和三方库都得升级,也太难了吧。这么一搞,......

Android学习笔记03-Kotlin字节码解析

一、背景kotlinx.coroutines 是由 JetBrains 开发的功能丰富的协程库。它包含本指南中涵盖的很多启用高级协程的原语,包括 launch、 async 等等。 本文是通过反编译协程相关class文件,分析协程的实现原理。 二、 Kotlin代码 T1.kt第一个基本协程代码 12345678910111213import kotlinx.coroutines.*fun ......

Android学习笔记02-Android Databinding+MVVM

一、Android data binding简单介绍Google IO 大会上,Android 团队发布了一个数据绑定框架(Data Binding Library)。官方文档对data binding的定位是:write declarative layouts and minimize the glue code necessary to bind your application log......

Android学习笔记01-理解Binder机制

Binder 驱动是 Android 主要的跨进程通信工具,在整个跨进程通信过程中,客户端会先去 ServiceManager 查询服务的远程引用,拿到远程引用后向服务端所在线程发起请求,最后服务端将结果回传给客户端。 本文以 ActivityManager 的启动和处理请求为例,介绍 Binder 机制的实现,全文分以下几个部分: 1) ServiceManager 的启动 2) Act......