Android进阶笔记
文章平均质量分 93
深入浅出分析Android
pren2016
现任携程旅行网“资深移动开发工程师”,5年Android开发经验
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Android进阶笔记】系统启动流程(init进程、Zygote进程、SystemServer)
文章目录1. 系统启动流程概括2. init 进程启动2.1. init 进程的入口函数2.2. 解析 init.rc 文件3. Zygote 进程启动3.1. 启动过程3.1.1. app_main.cpp3.1.2. AndroidRuntime.cpp3.1.3. ZygoteInit.java3.1.4. ZygoteServer.java3.2. 启动总结4. SystemServer 的处理4.1. 启动 SystemServer 进程4.1.1. 启动 Binder线程池4.1.2. main原创 2021-05-14 15:08:25 · 1195 阅读 · 0 评论 -
【Android进阶笔记】虚拟机(Dalvik、ART)
文章目录Dalvik 虚拟机与 JVM 的区别架构区别字节码区别其他区别DVM 运行时堆COW 策略运行时堆垃圾回收GC 日志GC 原因其他字段日志示例ART 虚拟机与 DVM 的区别运行机制区别CPU 区别解释器、JIT 和 AOT简介三者的配合method 的编译运行垃圾回收Android 8 之前Android 8 开始Android 10 开始GC 日志GC 原因垃圾收集器名称其他字段Dalvik 虚拟机Dalvik 虚拟机(Dalvik Virtual Machine),简称 DVM。它并原创 2021-05-13 11:25:10 · 804 阅读 · 0 评论 -
【Android进阶笔记】热修复(代码、资源、动态链接库)
文章目录1. 热修复1.1. 作用1.2. 主流热修复框架1.2.1. 主流框架1.2.2. 框架对比2. 代码修复2.1. 类加载方案2.1.1. Dex 分包机制2.1.2. 类加载2.1.3. 修复方案2.2. 底层替换方案2.2.1. ArtMethod2.2.2. 修复方案2.3. Instant Run 方案2.3.1. Instant Run 原理2.3.2. 修复方案3. 资源修复4. 动态链接库修复4.1. so 的加载4.2. 注册 Native 方法4.2.1. 静态注册Native方原创 2021-05-10 15:43:34 · 690 阅读 · 0 评论 -
【Android进阶笔记】Binder机制
文章目录1. 传统的Linux进程间通信1.1. 基本原理1.2. 管道和消息队列的原理2. Binder原理2.1. Binder 是什么2.2. 动态内核可加载模块(LKM)2.3. 内存映射(mmap)2.4. Binder 数据流转原理2.5. Binder 和传统 IPC 对比2.5.1. 传统 Linux 跨进程2.5.2. Binder 的优势3. Binder 通信模型3.1. Client / Server / ServiceManager / Binder Dirver3.2. Bind原创 2021-03-08 14:10:33 · 496 阅读 · 3 评论 -
【Android进阶笔记】消息机制(Handler、Looper、MessageQueue、Message、IdleHandler)
文章目录1. Android 消息机制1.1. 消息机制的模型1.2. 消息机制的作用2. MessageQueue2.1. MessageQueue的插入2.2. MessageQueue的读取2.3. MessageQueue的退出3. Lopper3.1. Looper的创建和退出3.1.1. 创建 Looper3.1.2. Looper 的构造方法3.1.3. 退出 Looper3.2. Looper的循环4. Handler4.1. 发送消息4.2. 插队和撤回4.3. 处理消息5. 消息机制方法原创 2021-03-08 14:15:30 · 563 阅读 · 0 评论 -
【Android进阶笔记】事件分发机制
文章目录1. DOWN 事件的流向2. MOVE 和 UP 事件的流向2.1. dispatchTouchEvent 返回 true2.2. onTouchEvent 返回 true2.3. 总结3. setOnTouchListener1. DOWN 事件的流向【关键点】dispatchTouchEvent、onTouchEvent 返回 true:事件就停止传递了(没有谁能再收到这个事件)。dispatchTouchEvent 返回 false:事件停止往子 View 传递和分发同时开原创 2021-03-08 14:20:54 · 261 阅读 · 0 评论 -
【Android进阶笔记】APP启动优化
文章目录1. 视觉优化1.1. 基本概念1.2. 默认情况1.3. 透明主题优化1.4. 图片主题2. 代码优化2.1. 冷启动耗时统计2.1.1. 方法一:adb2.1.2. 方法二:Logcat2.2. Application优化2.3. 闪屏页优化1. 视觉优化1.1. 基本概念冷启动时,系统有三个任务:加载并启动应用程序启动后立即显示应用程序空白启动窗口创建应用程序进程应用程序进程创建后,就会负责下一阶段:创建APP对象启动主线程创建应用入口的Activity对象填充原创 2021-03-08 14:27:07 · 322 阅读 · 0 评论 -
【Android进阶笔记】渲染优化
文章目录1. CPU与GPU协同工作原理1.1. CPU和GPU架构1.1.1. 画面显示过程1.1.2. 没有Vsync1.1.3. 有Vsync1.1.4. 掉帧查看2. CPU优化2.1. 视图层次结构优化2.2. \优化2.3. \优化2.4. \优化3. GPU过度绘制3.1. background优化4. GPU呈现模式分析1. CPU与GPU协同工作原理1.1. CPU和GPU架构CPU:解析布局,生成View对象及位置属性,转化为多维矢量图形。 GPU:将矢量图原创 2021-03-08 14:28:34 · 485 阅读 · 0 评论 -
【Android进阶笔记】内存优化(内存泄漏优化)
文章目录1. 内存抖动1.1. 现象1.2. 避免2. 内存泄漏2.1. 内存泄漏的检测与定位2.2. 常见的内存泄漏2.2.1. 静态变量内存泄漏2.2.2. 非静态内部类、匿名内部类内存泄漏2.2.3. 单例模式内存泄漏2.2.4. 系统服务内存泄漏2.3. 防止内存泄漏2.4. LeakCanary 工具1. 内存抖动短时间内创建大量对象,挤占 Eden 区,导致频繁 MinorGC,内存就会发生抖动。1.1. 现象 MemoryProfile内存图为锯齿状,并伴随大量的白色垃圾原创 2021-03-08 14:30:36 · 1060 阅读 · 0 评论 -
【Android进阶笔记】图片优化(理论大小和实际大小的计算方式)
文章目录1. 图片压缩格式1.1. 常见的图片格式1.2. WebP格式2. Android内存中的图片2.1. 位图配置Bitmap.Config2.2. 计算占用内存大小2.2.1. 理论值2.2.2. 实际值3. 图片压缩3.1. 质量压缩3.2. 采样率压缩3.3. 尺寸压缩3.4. 图片压缩总结3.5. 实际效果对比1. 图片压缩格式1.1. 常见的图片格式格式质量透明压缩方式png较高支持图片压缩算法。把相似的颜色压缩在一起jpg/jpeg良好不原创 2021-03-08 14:31:34 · 933 阅读 · 0 评论 -
【Android进阶笔记】进程保活
文章目录1. 进程的优先级1.1. 前台进程1.2. 可视进程1.3. 服务进程1.4. 后台进程1.5. 空进程2. LowmemoryKiller2.1. 原理2.2. 划分标准3. 进程保活3.1. Activity提权3.2. Service提权3.3. 广播拉活3.4. 全家桶拉活3.5. 推送拉活3.6. Sticky Service拉活3.7. JobScheduler 拉活3.8. 系统账户拉活3.9. 双进程守护3.10. 自启动白名单1. 进程的优先级https://devel原创 2021-03-08 14:32:33 · 660 阅读 · 0 评论 -
【Android进阶笔记】NDK-C/C++基础核心(数组、指针、函数、预处理器、结构体)
文章目录1. 数据类型1.1. 基本类型1.2. bool 类型1.3. void 类型2. 数组2.1. 声明数组2.2. 初始化数组2.3. 动态数组2.3.1. malloc2.3.2. calloc2.3.3. realloc2.3.4. free3. 指针3.1. 指针与数组3.1.1. 数组指针3.1.2. 指针数组3.2. 指针与常量3.2.1. 常量指针3.2.2. 指针常量3.2.3. 常指针常量3.3. 多级指针4. 函数4.1. 函数声明4.2. 函数定义4.3. 传递参数的方式4.3原创 2021-03-09 10:31:29 · 661 阅读 · 0 评论 -
【Android进阶笔记】NDK-C++面向对象(封装、继承、多态、RVO、NRVO)
文章目录1. 类与对象1.1. C++ 类定义1.1.1. 类访问修饰符1.1.2. 构造函数 & 析构函数1.1.3. 静态成员1.2. C++ 函数1.2.1. 拷贝构造函数1.2.2. 友元函数1.2.3. 内联函数2. 函数重载和运算符重载2.1. 函数重载2.2. 运算符重载2.2.1. 可重载运算符2.2.2. 不可重载运算符3. 封装4. 继承4.1. 继承类型4.2. 多继承4.3. 基类 & 派生类5. 多态5.1. 静态多态5.2. 动态多态(虚函数)5.2.1. 虚函数原创 2021-03-09 15:02:59 · 534 阅读 · 0 评论
分享