Java和Android的ClassLoader原理分析

Java中的ClassLoader

类加载器
Java和Android的ClassLoader原理分析

加载流程
Java和Android的ClassLoader原理分析

Android中的ClassLoader

Android的ClassLoader的种类

BootClassLoader:加载Android FrameWork层class文件
PathClassLoader:用来加载已经安装的 apk 的 dex文件
DexClassLoader
BaseDexClassLoader

问题:一个app需要至少哪几个ClassLoader能正常运行呢?
BootClassLoader 和 PathClassLoader

Android中ClassLoader的特点

双亲代理模式的特点
类加载的共享功能
类加载的隔离功能

同一个classname、同一个packagename、同一个ClassLoader去加载,满足这三个条件才被认为是同一个类

ClassLoader源码

Java和Android的ClassLoader原理分析
加载流程:
Java和Android的ClassLoader原理分析

Android中的动态加载

Android中的动态加载比一般Java程序复杂在哪里?

动态加载难点:

  • 有许多组件类需要注册才能使用
  • 资源的动态加载很复杂
  • android每个版本都有所不同,适配困难

Android程序运行需要一个上下文环境

总结

Android中ClassLoader的种类
Android中的ClassLoader的特点
Android中ClassLoader源码