Android中的类加载器

①Android中的ClassLoader分哪几种?各有什么作用?

答: Android的ClassLoader分为:BootClasssLoader、PathClassLoader和DexClassLoader三种。其中:
BootClassLoader:是预加载一些常用类,动态加载的。
PathClassLoader:加载系统类和已安装的APK。
DexClassLoader:可加载dex文件以及包含dex文件的apk文件和jar包,也可以加载SD卡中的文件。

②双亲委托模式

这个概念和Java中的双亲委托模式是一个意思,是一套加载类的流程机制。简述为:委托自下而上,查找自上而下。
什么意思呢?首先要了解这些系统提供的类加载器的继承关系。
首先来看一下从网上借用的一张继承关系图:
Android中的类加载器
由图可知,ClassLoader派生的类不光有上文说的三种,还包括其他的,但上文中的三种是核心。其中SecureClassLoader及其派生类是为了类加载安全机制所派生的一块类。
BootClassLoader继承自ClassLoader,PathClassLoader和DexClassLoader均继承自BaseDexClassLoader,在BaseDexClassLoader包含了各个方法的具体实现。
下面说说双亲委托模型。在加载类的时候,当前类加载器会委托给其父类加载器,若父类加载器还有父类加载器,则会继续向上委托,直至BootClassLoader,然后由BootClassLoader开始查找加载,若BootClassLoader未找到,则往下看其子类加载器,层层查找。若最终也没找到,则抛出未找到类异常,否则返回该类。