1、Vold
Vold是Volume Daemon的缩写,它是Android平台中外部存储系统的管控中心,包括SD卡的拔插事件检测、SD卡挂载、卸载、格式化等等。
2、MountService
MountService运行在system_server进程,它会和Vold交互,一方面它接受Vold的消息并处理,比如应用程序常监听的ACTION_MEDIA_MOUNTED/ACTION_MEDIA_EJECT等广播,就是MountService在接收到Vold消息之后发出来的;另一方面,MountService也会给Vold发信息,比如卸载、格式化等命令。
3、实例操作流程
当一个SD卡插入之后,首先Kernel会发送一个Uevent事件给Vold,Vold会处理并把这个信息转给MountService,注意这个时候其实还没有mount上的,只是发现了存储设备并add;然后MountService会调用doMountVolume(path)发信息给Vold,告诉需要mount挂载,Vold则发指令给Kernel去mount,如果mount上之后,Vold会再发消息给MountService,这个时候MountService才会把ACTION_MEDIA_MOUNTED广播发出来。
4、在SDK中可以使用StorageManager来获取存储设备的挂载信息,通过源码可以知道StorageManager内部也是通过binder在MountService获取的数据。
Vold和MountService关系探究
最新推荐文章于 2022-08-01 11:33:20 发布