searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Android Vold架构

2023-08-30 09:20:12
38
0
1. 总体架构
Vold服务由volumeManager统一管控,它将具体任务分别分派给netlinkManager, commandListener, directVolume, Volume去完成。
Vold服务向下通过socket机制与底层驱动交互,向上通过JNI, intent, socket, doCommand等机制与Java Framework交互。
2 流程概览
2.1 开启服务
初始化Android系统时开启Vold本地服务,
Vold在/dev/block下创建vold文件夹,开启VolumeManager, NetlinkManager, CommandListener。
2.2 引导Uevent
NetlinkManager负责监听底层Linux上报的uevent事件。
 
 
系统的SocketListner统一管理所有socket事件。
 
最后由onEvent()将vold事件交还给NetlinkManager处理。
 
2.3 处理Block和Switch事件
NetlinkManager调用VolumeManager中处理vold事件的类。
handleBlockEvent()完成SD的挂载和卸载,具体交由DirectVolume完成。
handleSwitchEvent()完成由USB实现的U盘的连接。
两者最后都是通过setBroadcast()将ResponsibleCode经过nativeDaemonConnector的socket监听机制,最终上传到MountService作统一规划。
 
 
MountService里的onEvent()得到解析后的事件,完成两大任务,
-< 发送命令doCommand()通过commandListener传递给volumeManager
-< 将事件信息广播给相关服务,供上层应用使用。
 
 
 
0条评论
0 / 1000
唐****宏
5文章数
0粉丝数
唐****宏
5 文章 | 0 粉丝
原创

Android Vold架构

2023-08-30 09:20:12
38
0
1. 总体架构
Vold服务由volumeManager统一管控,它将具体任务分别分派给netlinkManager, commandListener, directVolume, Volume去完成。
Vold服务向下通过socket机制与底层驱动交互,向上通过JNI, intent, socket, doCommand等机制与Java Framework交互。
2 流程概览
2.1 开启服务
初始化Android系统时开启Vold本地服务,
Vold在/dev/block下创建vold文件夹,开启VolumeManager, NetlinkManager, CommandListener。
2.2 引导Uevent
NetlinkManager负责监听底层Linux上报的uevent事件。
 
 
系统的SocketListner统一管理所有socket事件。
 
最后由onEvent()将vold事件交还给NetlinkManager处理。
 
2.3 处理Block和Switch事件
NetlinkManager调用VolumeManager中处理vold事件的类。
handleBlockEvent()完成SD的挂载和卸载,具体交由DirectVolume完成。
handleSwitchEvent()完成由USB实现的U盘的连接。
两者最后都是通过setBroadcast()将ResponsibleCode经过nativeDaemonConnector的socket监听机制,最终上传到MountService作统一规划。
 
 
MountService里的onEvent()得到解析后的事件,完成两大任务,
-< 发送命令doCommand()通过commandListener传递给volumeManager
-< 将事件信息广播给相关服务,供上层应用使用。
 
 
 
文章来自个人专栏
android基础
5 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0