Android 类加载模式

发布时间:2020-07-08 22:50:14 作者:星恒Android
来源:网络 阅读:970

类图

 Android 类加载模式

相关类介绍

BootClassLoader

调用流程
1、ZygoteInit的main方法
2、预加载常用类
3、读取预加载类名时获取BootClassLoader单例
4、调用classForName(C实现)获取结果

DexClassLoader

构造函数
public DexClassLoader (String dexPath, String dexOutputDir, String libPath, ClassLoader parent)
optimizedDirectory是用来缓存我们需要加载的dex文件的,并创建一个DexFile对象,如果它为null,那么会直接使用dex文件原有的路径来创建DexFile  
DexClassLoader可以指定自己的optimizedDirectory,所以它可以加载外部的dex,因为这个dex会被复制到内部路径的optimizedDirectory
注意:该加载器能够加载未安装的jar/apk/dex

PathClassLoader

构造函数
public PathClassLoader (String path, String libPath, ClassLoader parent)
调用流程
1、Zygote进程启动SyetemServer进程
2、ZygoteInit的startSystemServer方法
3、Zygote进程通过forkSystemServer方法fork自身创建子进程并且调用handleSystemServerProcess
4、 工厂方法创建PathClassLoader
注意:该加载器只能加载系统中已经安装过的apk

SecureClassLoader和URLClassLoader

SecureClassLoader类和JDK8中的SecureClassLoader类的代码是一样的,它继承了抽象类ClassLoader。SecureClassLoader并不是ClassLoader的实现类,而是拓展了ClassLoader类加入了权限方面的功能,加强了ClassLoader的安全性。
URLClassLoader类和JDK8中的URLClassLoader类的代码是一样的,它继承自SecureClassLoader,用来通过URl路径从jar文件和文件夹中加载类和资源。

InMemoryDexClassLoader

InMemoryDexClassLoader是Android8.0新增的类加载器,继承自BaseDexClassLoader,用于加载内存中的dex文件。

具体加载源码

推荐阅读:
  1. Android 代码热修复详解
  2. Android组件化与插件化开发

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

移动开发 android roi

上一篇:ASA防火墙概述与初始化_01

下一篇:I/O多路转接   ----   poll

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》