下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

简单剖析Android 2.3 SD卡挂载流程<2>

作者:课课家教育     来源: http://www.kokojia.com点击数:1150发布时间: 2019-04-03 10:32:56

标签: Android 2.3Android开发Android学习

    智能机更新换代的速度比我们换衣服还要快一些,还没好好的享受最新版本的手机带来的乐趣,下一个最新版本也快发布了,但很多都是在改良优化方面下功夫,其底料还是原来的配方。现在我们还是简单讲讲Android 2.3 SD卡挂载流程吧。

简单剖析Android 2.3 SD卡挂载流程_Android 2.3_Android开发_Android学习_课课家

       在简单剖析Android 2.3 SD卡挂载流程<1>中,我们主要简单的介绍了SD卡的挂载流程。包括了从内核层到用户层事件消息的传递,以及Vold的简介。本文将继续介绍SD卡的挂载,但文中并不会涉及代码的详细分析,因为这部分网上已有资料,我会在文章结尾贴出来供大家参考。本文主要目的是一方面对自己学习这一部分的总结,另一方面希望大家能够指出文中理解错误的地方。

  1.SD卡挂载流程图

          SD卡的挂载流程图如下:

  绿色箭头:表示插入SD卡后事件传递以及SD卡挂载

  红色箭头:表示挂载成功后的消息传递流程

  黄色箭头:表示MountService发出挂载/卸载SD卡的命令

  大家可能对图中突然出现的这么多的名称感到奇怪,这些都是在Android 2.3 源码中可以找到的,接下来我会为大家一一解释这些类的作用。

  2.各个文件的主要作用

  (1)Kernel:这个是系统内核啦。不是我要分析的文件,本文涉及内容不是内核级的哦!

  (2)NETlinkManager:全称是NETLinkManager.cpp位于Android 2.3源码位置/system/vold/NetlinkManager.cpp。该类的主要通过引用NetlinkHandler类中的onEvent()方法来接收来自内核的事件消息,NetlinkHandler位于/system/vold/NetlinkHandler.cpp。

  (3)VolumeManager:全称是VolumeManager.cpp位于Android 2.3源码位置/system/vold/VolumeManager.cpp。该类的主要作用是接收经过NetlinkManager处理过后的事件消息。因为我们这里是SD卡的挂载,因此经过NetlinkManager处理过后的消息会分为五种,分别是:block,switch,usb_composite,battery,power_supply。这里SD卡挂载的事件是block。

  (4)DirectVolume:位于/system/vold/DirectVolume.cpp。该类的是一个工具类,主要负责对传入的事件进行进一步的处理,block事件又可以分为:Add,Removed,Change,Noaction这四种。后文通过介绍Add事件展开。

  (5)Volume:Volume.cpp位于/system/vold/Volume.cpp,该类是负责SD卡挂载的主要类。Volume.cpp主要负责检查SD卡格式,以及对复合要求的SD卡进行挂载,并通过Socket将消息SD卡挂载的消息传递给NativeDaemonConnector。

  (6)NativeDaemonConnector:该类位于frameworks/base/services/java/com.android.server/NativeDaemonConnector.java。该类用于接收来自Volume.cpp 发来的SD卡挂载消息并向上传递。

  (7)MountService:位于frameworks/base/services/java/com.android.server/MountService.java。MountService是一个服务类,该服务是系统服务,提供对外部存储设备的管理、查询等。在外部存储设备状态发生变化的时候,该类会发出相应的通知给上层应用。在Android系统中这是一个非常重要的类。

  (8)StorageManaer:位于frameworks/base/core/java/andriod/os/storage/StorageManager.java。在该类的说明中有提到,该类是系统存储服务的接口。在系统设置中,有Storage相关项,同时Setting也注册了该类的监听器。而StorageManager又将自己的监听器注册到了MountService中,因此该类主要用于上层应用获取SD卡状态。

  通过上文对各个文件的作用简介,以及整个SD卡的挂载流程图可以知道,Android 系统是如何从底层获取SD卡挂载信息的。

  上面已经详细讲解了Android 系统中各个文件的作用了以及一些基本的信息,我们后续还会继续补充。

赞(11)
踩(2)
分享到:
华为认证网络工程师 HCIE直播课视频教程