前言
每位Android开发工程师一定都听说和接触过Framework,也一定了解Framework杜宇Android开发的重要性。
Framework其实可以简单的理解为一些API的库房,android开发人员将一些基本功能实现,通过接口提供给上层调用,可以重复的调用。我们可以称Framework层才真正是Java语言实现的层,在这层里定义的API都是用Java语言编写。但是又因为它包含了JNI的方法,JNI用C/C++编写接口,根据函数表查询调用核心库层里的底层方法,最终访问到Linux内核。那么Framework层的作用就有2个:
- 用Java语言编写一些规范化的模块封装成框架,供APP层开发者调用开发出具有特殊业务的手机应用。
- 用Java Native Interface调用core lib层的本地方法,JNI的库是在Dalvik虚拟机启动时加载进去的,Dalvik会直接去寻址这个JNI方法,然后去调用。
现在,在大厂的面试过程中,底层原理,尤其Framework是无论如何都躲不过去的一关!!
Framework有多重要?
Android Framework 开发虽然比较偏底层,圈子窄,但是能掌握一些原理的东西,可以触类旁通,往应用层发展也可以,接下来我们看看Framework知识有多重要。
举几个栗子,你或许就能清楚了:掉帧监控,函数插装,慢函数检测,ANR 监控,启动监控,都需要对 Framework 有比较深入的了解,才能知道怎么去做监控,利用什么机制去监控,函数插桩插到哪里,反射调用该反射哪个类哪个方法哪个属性……而Framework中,Binder和Handler更是重中之重。
而且目前一线企业的app都是多线程和多进程的,而Android进程间通信机制就是Binder,原生的线程间通信则是Handler,Binder和Handler是了解安卓运行机制必须要掌握的一个知识点,更是大厂面试必问的知识点:
-
Android中多进程通信的方式有哪些?
-
进程通信你用过哪些?原理是什么?(字节跳动、小米)
-
描述下Binder机制原理?(东方头条)
-
Binder线程池的工作过程是什么样?(东方头条)
-
Handler怎么进行线程通信,原理是什么?(东方头条)
-
Handler如果没有消息处理是阻塞的还是非阻塞的?(字节跳动、小米)
-
handler.post(Runnable) runnable是如何执行的?(字节跳动、小米)
-
handler的Callback和handlemessage都存在,但callback返回true handleMessage还会执行么?(字节跳动、小米)
-
Handler的sendMessage和postDelay的区别?(字节跳动)
代码是死的,但系统运转是活的,各模块代码在不同的进程中运行,想要真正理解安卓的几大服务,势必要掌握安卓的通信机制,Handler和Binder也是安卓最为重要的通信机制。
为了帮助大家更好地学习Framework,更好地备战金三银四,这里给大家分享一份由字节大佬总结的《Android Framework 开发揭秘》,今天在这里分享给大家
由于篇幅限制,下文仅展示部分内容,需要完整版可以点击下方微信卡片免费领取。 点击免费领取《Android Framework开发揭秘》
Android Framework 开发学习指南
《Android Framework 开发揭秘》
第一章 系统启动流程分析
- 第一节 Android启动概览
- 第二节 init.rc解析第
- 第三节 Zygote第四节 面试题
第二章 Binder解析
- 第一节 宏观认识Binder
- 第二节binder的jni方法注册
- 第三节binder驱动
- 第四节 数据结构
- 第五节 启动service_manager
- 第六节获取service_manager
- 第七节 addService流程
- 第八节 Binder面试题全解析
第三章 Handler解析
- 第一节 源码分析
- 第二节 难点问题
- 第三节Handler常问面试题
第四章 AMS 解析
- 第一节 引言
- 第二节 Android架构
- 第三节 通信方式
- 第四节 系统启动系列
- 第五节 AMS
- 第六节 AMS 面试题解析
第五章 WMS解析
- 第一节Activity与Window相关概念
- 第二节 Android窗口管理服务WindowManagerService计算Activity窗口大小的过程分析
- 第三节Android窗口管理服务WindowManagerService对窗口的组织方式分析
- 第四节 Android窗口管理服务WindowManagerService对输入法窗口的管理分析
- 第五节 Android窗口管理服务WindowManagerService对壁纸窗口的管理分析…
第六章PKMS Android10.0 源码解读
- 第一节 前言 PKMS 是什么东西?
- 第二节 PKMS 概述信息
- 第三节 PKMS角色位置
- 第四节 PKMS 启动过程分析
- 第五节 APK的扫描
- 第七节 PMS之权限扫描
- 第八节 PackageManagerService大综合笔记
相信这份资料,一定可以为大家在FrameWork的学习上提供强有力的帮助和支撑,快人一步成为真正的高级Android开发者。