从做Android的第一天起,你一定听过无数次关于Framework的讨论,也曾在这个版块被面试官吊锤N次。掉帧监控,函数插桩,慢函数检测,ANR 监控,启动监控,都需要对 Framework 有比较深入的了解,才能知道怎么去监控,利用什么机制监控,函数插桩插到哪里,反射调用该反射哪个类哪个方法哪个属性……
Framework 作为 Android 框架层,为众多App提供了N多的API来调用,但很多机制都是Framework包装好直接给 App 来用的,不知道这些机制原理,就无从下手在这基础上进行优化。
如果你了解 Android App 的启动机制,做启动优化一定会会更得心应手:定制什么样的 StartingWindow;什么时候可以拿到图片的宽高;DelayLoad 怎么做才会更合适;Service 什么时候启动可以不影响启动速度;Activity onResume 回调的时候真的可见了么?ContentProvider 会不会影响启动速度?为什么会影响?
再比如我们经常说的 Handler,MessageQueue,Looper。看源码你就可以更好的理解那些概念:Thread 和 Handler 的关系;为什么不能在子线程更新 UI?idleHandler什么时候运行?主线程为什么循环却不会卡死?ContentProvider、Broadcast、Service 是怎么利用 Message 监控 ANR 的?
再比如说 Android 的进程管理机制。AMS 把 Android 进程按照一定的规则,设置不同的优先级,在内存比较低的时候,高优先级的 App 比低优先级的 App 更不容易被系统干掉!那么 AMS 是按照什么规则来设置优先级的呢?了解这些规则是不是可以提高 App 的存活率呢?这都是可以通过熟读 AMS 代码知道的。
Android 的卡顿掉帧问题,很多文章都说卡顿是由于主线程耗时造成的,这其实只是一部分,其他的比如 RenderThread 耗时也会导致卡顿、Binder 通信耗时也会导致卡顿,60 fps 下没问题的 app 90fps或者 120fps 下也可能会卡顿,有时候低内存下你主线程读个文件可能都会导致卡顿。真正明白了卡顿的原理,再面对卡顿问题也不会再手足无措。
这里给大家推荐一套学习路线,并附有相关《Android 底层原理核心知识点笔记》,相信可以给大家提供一些帮助,有需要的朋友们也可以领取一下随时查漏补缺。,有需要的朋友们可以 点击这里直接获取!下载下来随时查漏补缺。
Handler机制实现原理部分
一、Handler机制之Thread
1.线程概念
2.Android线程的实现
3.线程的阻塞
4.关于线程上下文切换
5.关于线程的安全问题
6.守护线程
7.线程的内存
二、Handler机制之ThreadLocal
1. Java中的ThreadLocal
2. Android中的ThreadLocal
3. Android 面试中的关于ThreadLocal的问题
三、Handler机制之SystemClock类
四、Handler机制之Looper与Handler简介
五、Handler机制之Message简介与消息对象对象池
1.Message和MessageQueue类注释
2.获取Message成员变量解析
3.获取Message对象
4.Message的消息对象池和无参的obtain()方法
5.obtain()有参函数解析
6.Message的 浅拷贝
六、Handler机制之Me****ssageQueue简介
七、Handler机制之消息发送
八、Handler机制之消息的取出与消息的其他操作
有需要具体笔记文档的朋友,可以 点击这里直接获取!
Android Binder机制原理部分
一、Android跨进程通信IPC之Linux基础
二、Android跨进程通信IPC之Bionic
三、Android跨进程通信IPC之关于"JNI"的那些事
四、Android跨进程通信IPC之AndroidIPC基础
五、Android跨进程通信IPC之Binder的三大接口
六、Android跨进程通信IPC之Binder框架
七、Android跨进程通信IPC之Binder相关结构体简介
八、Android跨进程通信IPC之Binder驱动
如果需要这份《Android Framework知识点汇总》,有需要具体笔记文档的朋友,可以 点击这里直接获取!
《Android 底层原理知识点汇总》完整目录
网友评论