Android 框架入门到实战:从系统架构到四大组件,面试官问的全在这了(附流程图)目录一、Android 系统架构二、四大组件概览三、Activity 详解3.1 生命周期3.2 四种启动模式3.3 Activity 之间的数据传递四、Service 详解五、BroadcastReceiver 详解六、ContentProvider 详解七、Intent 与 IntentFilter八、Fragment 生命周期与通信九、Jetpack 核心组件十、实际开发中的坑与选型总结一、Android 系统架构Android 系统从下到上分为五层,面试经常问。说白了,越往下越接近硬件,越往上越接近用户。┌─────────────────────────────────┐ │ 应用层(System Apps) │ ← 电话、短信、浏览器、你自己写的 App ├─────────────────────────────────┤ │ Java API 框架层(Framework) │ ← ActivityManager、WindowManager、ContentProvider... ├─────────────────────────────────┤ │ 原生库 + Android 运行时(ART) │ ← C/C++ 库(OpenGL、SQLite)+ 虚拟机 ├─────────────────────────────────┤ │ 硬件抽象层(HAL) │ ← 硬件接口抽象,厂商自己实现 ├─────────────────────────────────┤ │ Linux 内核层(Kernel) │ ← 驱动(摄像头、WiFi、音频、Binder...) └─────────────────────────────────┘各层职责(一句话版):层级干嘛的举例应用层用户直接用的 App微信、相册、桌面Framework 层提供 API 给开发者调Activity、Service、NotificationART + 原生库跑代码 + 提供底层能力ART 虚拟机、SQLite、OpenGLHAL 层对硬件接口做统一抽象摄像头 HAL、音频 HALLinux 内核进程管理、内存管理、驱动Binder 驱动(Android 核心 IPC)注:Android 用的是 ART(Android Runtime),不是 JVM。ART 在安装时就把字节码编译成本地机器码(AOT),启动比 Dalvik 快,但安装时间稍长。系统启动流程(简版):BootLoaderLinux Kernel 启动init 进程Zygote 进程(孵化器)SystemServerAMSActivityManagerServiceWMSWindowManagerServicePMSPackageManagerServiceLauncher 启动用户点击 App 图标Zygote fork 新进程App 启动二、四大组件概览Android 四大组件(面试必问),每一种都要在AndroidManifest.xml里注册:组件作用一句话记Activity界面,和用户交互看得见的都是 ActivityService后台干活,没界面播放音乐、下载文件BroadcastReceiver收广播电量低了、网络断了、开机了ContentProvider跨 App 共享数据读通讯录、读短信!-- AndroidManifest.xml 中注册示例 --applicationactivityandroid:name=".MainActivity"/serviceandroid:name=".MyService"/receiverandroid:name=".MyReceiver"/providerandroid:name=".MyProvider"android:authorities="com.example.provider"//application三、Activity 详解Activity 就是 App 的一个页面。打开一个 App,你看到的每个界面基本都是一个 Activity。3.1 生命周期生命周期图(面试画这个就行):