Android Framework

Android Framework 可以理解为:

Android 系统中位于 App 和底层系统之间的一层“系统框架”,它为应用提供各种高级 API,并负责管理应用的运行、组件生命周期、窗口、资源、通知、权限等。

平时写 Android 代码时大量使用的类,比如:

Activity
Service
BroadcastReceiver
ContentProvider
View
Intent
Handler
Context
Resources
NotificationManager
PackageManager
WindowManager

这些大多都属于 Android Framework 提供的能力。


1. Android 系统大致分层

可以简单分成这样:

应用层 App
    ↓
Android Framework
    ↓
Native Libraries / Android Runtime
    ↓
HAL 硬件抽象层
    ↓
Linux Kernel
    ↓
硬件

也可以画成:

你的 App
  |
  | 调用 Activity、Service、View、Notification 等 API
  v
Android Framework
  |
  | 调用 Native 层、Runtime、系统服务
  v
底层系统 / 驱动 / 硬件

2. Android Framework 主要包含什么?

Android Framework 不是单独一个类,而是一整套框架和系统服务。

常见包括:

应用组件框架
窗口和 View 系统
资源管理系统
包管理系统
通知系统
输入系统
权限系统
进程和任务管理
内容提供者机制
Binder 通信机制的 Java 层封装

3. 应用组件框架

Android 四大组件就是 Framework 提供的模型:

Activity
Service
BroadcastReceiver
ContentProvider

你写:

class MainActivity : Activity()

实际上就是继承 Framework 提供的 Activity

你调用:

startActivity(intent)
startService(intent)
sendBroadcast(intent)
contentResolver.query(...)

这些都是 Framework 层提供给 App 的 API。

背后会通过 Binder 和系统服务通信。


4. 系统服务

Android Framework 里有很多重要的系统服务,它们大多运行在 system_server 进程中。

例如:

系统服务 作用
AMS / ActivityManagerService 管理应用进程、Service、广播等
ATMS / ActivityTaskManagerService 管理 Activity 任务栈、Activity 启动
WMS / WindowManagerService 管理窗口显示
PMS / PackageManagerService 管理应用安装包、组件信息、权限
NMS / NotificationManagerService 管理通知
IMS / InputManagerService 管理输入事件
PowerManagerService 管理电源和休眠
LocationManagerService 管理定位
SensorService 管理传感器
AudioService 管理音频

比如你写:

val notificationManager =
    getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager

你拿到的其实是 Framework 提供的通知管理接口,背后会和系统的通知服务通信。


5. Framework API 和系统服务的关系

平时 App 调用的是 Framework API,例如:

startActivity(intent)

这看起来只是调用一个普通方法,但背后可能发生:

App 调用 Framework API
    ↓
Framework API 通过 Binder 请求系统服务
    ↓
system_server 中的 AMS/ATMS/WMS 等处理
    ↓
系统回调 App 进程执行生命周期方法

例如启动 Activity:

MainActivity.startActivity()
    ↓
ContextImpl / Instrumentation
    ↓
Binder IPC
    ↓
ATMS/AMS
    ↓
目标 App ActivityThread
    ↓
目标 Activity.onCreate()

所以 Framework 既包括你能直接调用的 API,也包括系统内部负责调度的服务。


6. 举个例子:Activity 属于 Framework

你写一个 Activity:

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    }
}

虽然你只写了很少代码,但背后 Framework 负责了很多事情:

创建 Activity 对象
调用 onCreate()
加载布局
管理生命周期
处理返回栈
管理窗口
分发触摸事件
处理配置变化

你只需要按照 Framework 定义好的规则写代码即可。


7. 举个例子:View 系统也属于 Framework

你写:

setContentView(R.layout.activity_main)

背后 Framework 会:

解析 XML 布局
创建 View 对象
测量 measure
布局 layout
绘制 draw
处理触摸事件
请求刷新 invalidate

所以 Android 的 UI 体系也是 Framework 的重要组成部分。


8. 举个例子:资源系统属于 Framework

你写:

val name = getString(R.string.app_name)
val color = getColor(R.color.primary)

背后 Framework 的 Resources 系统负责:

根据资源 id 找到资源
根据语言选择不同 values
根据屏幕密度选择不同 drawable
根据横竖屏选择不同 layout

例如:

res/values/strings.xml
res/values-zh/strings.xml
res/drawable-mdpi/
res/drawable-xxhdpi/
res/layout/
res/layout-land/

这些适配能力都是 Framework 提供的。


9. Framework 和 SDK 是什么关系?

容易混淆:

Android SDK

SDK 是开发工具包,包括:

Framework API 的编译依赖
模拟器
adb
build tools
platform tools
文档
示例

Android Framework

Framework 是 Android 系统运行时真正存在的一套框架代码和系统服务。

简单区别:

SDK:给开发者编译和开发用
Framework:设备系统里真正运行的框架

你开发时依赖 SDK 中的 android.jar

android.jar 里有 Activity、Service、View 等类的 API 壳

运行时,手机系统里真正的 Framework 实现会执行。


10. Framework 和 Jetpack 是什么关系?

Android Framework 是系统自带的框架。

Jetpack 是 Google 提供的一套开发库,随 App 一起打包或通过依赖引入。

例如:

Android Framework Jetpack
Activity AppCompatActivity / ComponentActivity
Fragment 早期在 Framework 中,后来主要用 AndroidX Fragment Fragment
SQLiteOpenHelper Room
Handler/Service/JobScheduler WorkManager
ViewModel 没有在系统 Framework 中 ViewModel
LiveData/Flow 不是 Framework LiveData/Flow
Navigation 不是 Framework Navigation

区别:

Framework:系统级,随 Android 版本更新
Jetpack:库级,随 App 依赖更新

例如:

implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:...")

这是 Jetpack,不是 Android 系统 Framework 本身。


11. Framework 和 AOSP 的关系

AOSP 是 Android Open Source Project,即 Android 开源项目。

Android Framework 的源码就是 AOSP 的一部分。

常见源码路径:

frameworks/base/core/java/android/app/Activity.java
frameworks/base/core/java/android/content/Context.java
frameworks/base/core/java/android/view/View.java
frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.java

也就是说:

AOSP 是完整 Android 开源系统
Framework 是其中负责应用框架和系统服务的重要部分

12. Framework 可以分为两部分理解

为了方便理解,可以分成:

1. App 进程里的 Framework API

这些是你 App 直接调用或继承的类:

Activity
Service
BroadcastReceiver
ContentProvider
Context
Intent
View
Handler
Looper
Resources

它们运行在你的 App 进程中。

2. system_server 里的系统服务

这些是系统级管理者:

AMS
ATMS
WMS
PMS
NMS
PowerManagerService
InputManagerService

它们运行在系统进程中。

两者通过 Binder 通信:

App Framework API
    |
    | Binder IPC
    v
System Services

13. 举一个完整调用链

比如显示一个通知:

notificationManager.notify(1, notification)

背后可以理解为:

你的 App
    |
    | NotificationManager.notify()
    v
Framework API
    |
    | Binder IPC
    v
NotificationManagerService
    |
    | 系统统一管理通知栏显示
    v
SystemUI 显示通知

你调用的 NotificationManager 是 Framework API,真正统一管理通知的是 NotificationManagerService


14. 再举一个:获取系统服务

你经常写:

val wm = getSystemService(Context.WINDOW_SERVICE) as WindowManager

或者:

val am = getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager

这里的 WindowManagerActivityManager 是 Framework 提供给 App 的“客户端接口”。

背后对应:

WindowManagerService
ActivityManagerService

可以理解为:

WindowManager 是代理/门面
WindowManagerService 是真正管理者

15. 总结

Android Framework 是 Android 系统中连接 App 和底层系统的一整套应用框架。

它提供:

Activity/Service 等组件模型
View/UI 系统
资源管理
Intent 和广播机制
权限机制
包管理
通知管理
窗口管理
进程管理
系统服务访问能力

它的作用是:

让开发者不用直接操作底层 Linux、驱动、进程和窗口,而是通过高级 API 开发 Android 应用。

最简单理解:

App 负责写业务逻辑
Android Framework 负责提供规则、API 和系统能力
底层系统负责硬件、驱动和运行环境

一句话:

Android Framework 就是 Android 应用运行所依赖的系统级框架层。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇