随笔分类 - 安卓
摘要:数据绑定库和MVVM 文章 官方-数据绑定库 美团-如何构建Android MVVM 应用框架 数据绑定库 数据绑定的作用? 使用DataBinding库就可以把数据源分配到控件上,自动更新UI内容,无需再手动编写设置数据的代码。数据绑定库会自动生成将布局中的视图和数据对象绑定所需的类,也提供了可在
阅读全文
摘要:LiveData 文章 官方-LiveData概览 实习-LiveData数据流设计入门 个人总结 LiveData解决了什么问题,有什么优势? LiveData具有生命周期感知能力,那么它就可以只更新处于活跃生命周期状态的应用组件的观察者。它遵循了观察者模式,LiveData通过通知Observe
阅读全文
摘要:Android当中替代HashMap的数据结构ArrayMap、SparseArray HashMap的缺点 在Android系统中,内存有限,而HashMap占用的内存空间较大,插入键值对需要创建新的结点,而且需要对插入的键值进行自动装箱。因此可以采用时间换空间的方式使用一些更加轻量的数据结构例如
阅读全文
摘要:Android的线程和线程池 主线程和子线程 Android沿用Java的线程模型,分为主线程和子线程,其中主线程主要处理和界面相关的事情,也叫UI线程。主线程的作用是运行四大组件以及处理它们和用户的交互,而子线程的作用则是执行耗时任务,比如网络请求、IO操作等等。由于Android的特性,如果在主
阅读全文
摘要:SurfaceView和普通View的区别、以及TextureView SurfaceView和普通View的区别 首先,SurfaceView是在一个新开的子线程中可以重新绘制画面,而view必须在UI的主线程中更新画面。 出现 SurfaceView 的原因在于:虽然说通常情况下 View 已经
阅读全文
摘要:Glide 基本使用 使用Glide的好处 + 基本的处理:图片压缩、缓存机制、内存管理等。 + 除此之外, Glide对Bitmap的管理是跟随生命周期去发生改变的 。其它的框架基本都是用LRU算法,当Activity销毁的时候不会释放之前加载图片占用的内存。而Glide的优势就是当Activit
阅读全文
摘要:Android当中的一些尺寸单位 手机尺寸 屏幕对角线的长度,单位为英寸(2.54cm)。 手机的分辨率 屏幕能够显示的像素数量,一般用在长方向上的数量*宽方向上的数量来表达。 手机的像素密度 pixels per inch,即ppi,也就是每英寸屏幕显示的像素数,像素密度越大,显示的画面细节就越丰
阅读全文
摘要:打包与APK瘦身 打包方式 + 使用Android Studio提供的可视化工具来生成带有正式签名的APK文件。 + 使用Gradle生成。 + 命令行打包gradlew assembleDebug, gradlew assembleRelease + 生成多渠道APK文件。 打包流程 1. 通过a
阅读全文
摘要:卡顿优化 卡顿优化与优化工具 + 卡顿 卡顿容易被直观感受,而且问题难以定位 卡顿产生的原因复杂:代码、内存、绘制、IO、难以复现 + 工具 + CPU Profiler 图形形式展示执行时间、调用栈等等;信息全面、包含所有线程;但是运行时开销严重,整体都会变慢Debug.startMethodTr
阅读全文
摘要:APP布局优化 Android绘制原理及工具 + CPU负责计算显示内容,比如视图创建、布局计算、图片解码、文本绘制等等。 + GPU负责栅格化操作(UI元素绘制到屏幕上),所谓栅格化就是将一些组件比如Bitmap拆分成不同的像素进行显示,然后完成绘制,这些操作非常耗时,所以引入GPU来加快栅格化操
阅读全文
摘要:内存优化 关于内存优化 内存问题很隐蔽,内存问题出现时一个累计的结果。 内存问题: + 内存抖动:工具显示锯齿状、GC导致卡顿 + 内存泄露:可用内存减少、频繁GC + 内存溢出:OOM、程序异常 工具选择: + Memory Profiler 实时图表展示应用内存使用量; 识别内存泄露、抖动等;
阅读全文
摘要:APP启动优化 关于APP启动优化 + 启动分类 + 冷启动: 耗时最多,衡量标准 Click Event IPC Process.start ActivityThread bindApplication LifeCycle ViewRootImpl + 热启动 最快 后台 前台 + 温启动 较快
阅读全文
摘要:Android性能优化 Android设备作为一种移动设备,不管是内存还是CPU的性能都受到一定的限制。过多地使用内存会导致程序内存溢出OOM;而过多地使用CPU资源,一般指做大量的耗时任务,会导致手机变得卡顿甚至出现程序无法响应的情况,即ANR。 Android性能优化方法 布局优化 尽量减少布局
阅读全文
摘要:关于自定义View 自定义View的分类 + 继承View重写onDraw方法 + 继承ViewGroup派生特殊的Layout + 继承特定的View例如TextView + 继承特定的ViewGroup例如LinearLayout 自定义View的步骤 + 继承 View 或者 View 的子类
阅读全文
摘要:RecyclerView和ListView的区别 ListView "Android ListView工作原理完全解析,带你从源码的角度彻底理解" "郭霖ListView异步加载图片闪动的问题" ListView缓存机制 RecycleBin机制,RecycleBin定义在AbsListView当中
阅读全文
摘要:关于ListView "郭霖ListView工作原理" "郭霖ListView异步加载图片闪动的问题" ListView 异步加载图片出现乱序的原因 ListView 在借助 RecycleBin机制 的帮助下,实现了一个 生产者消费者 的模式,不管有多少条数据需要显示,ListView中的子Vie
阅读全文
摘要:Camera2 Android 5.0 之后,相机 API 用的是 包下的内容了 。 基本原理 采用了 管道 的概念,将Camera Device相机设备与Android Device安卓设备连接起来,建立一个会话,所有的预览、拍照请求,都在这个会话基础上发送给Camera Device,而Came
阅读全文
摘要:OkHttp梳理 OkHttp的使用 + 添加依赖 + 基本代码 OkHttp的原理 + OkHttp子系统层级结构 + 网络配置层 + 重定向层 + Header拼接层 + HTTP缓存层 + 网络连接层 + 数据响应层 + 五个默认拦截器 + RetryAndFollowUpIntercepto
阅读全文
摘要:View的事件体系 复习复习复习!!! 打开以前的思维导图: View的事件分发机制 首先事件分发机制分发的是 MotionEvent事件 ,也就是点击事件,是当MotionEvent事件产生以后,系统需要把这个事件传递给一个具体的View并且得到处理的过程。 事件产生后的传递过程是从Activit
阅读全文
摘要:Android的消息机制 Handler是Android中消息机制的上层接口,开发过程中只需要和Handler交互即可。通过Handler就可以将一个任务切换到Handler所在线程中执行。其中的一个应用场景就是在子线程中执行耗时操作例如读取文件访问网络等以后可以通过handler将更新UI(UI非
阅读全文

浙公网安备 33010602011771号