zoukankan      html  css  js  c++  java
  • Android ClassLoader笔记(二)

    二、Android ClassLoader

    Android ClassLoader加载的是dex文件,而不是jar或class文件。

    2种类型:系统和自定义
    系统加载器有:BootClassLoader(BCL)、PathClassLoader(PCL)、DexClassLoader(DCL)

    1、BCL:java实现的,是CL的内部类。Android系统启动时会使用该类来预加载常用类。它是一个单例类,访问修饰符是默认的,只有在同一个包才可以使用,因此在我们的应用是无法直接调用的。

    2、PCL:Android系统使用PCL来加载系统类和应用程序的类,加载的都是dex文件(或者是包含dex的apk文件或jar文件)。继承于BaseDexClassLoader。

    3、DCL:可以加载dex文件(或者是包含dex的apk文件或jar文件),也可以从SD卡进行加载,这意味着它可以在应用未安装的情况下加载dex相关文件。它是热修复和插件化的基础。继承于BaseDexClassLoader。它的构造函数参数optimizedDirectory代表什么呢?我们知道应用程序在第一次加载时,Android系统会对dex优化成odex,这样以后再次启动这个程序就直接加载odex,提高了启动速度和执行效率。而这个参数就是代表odex的存储路径,需要注意的是该路径必须是一个内部存储路径。

    运行Android程序需要几种类加载器:(1)PCL(2)BCL
    继承关系:
    BootClassLoader、BaseDexClassLoader、SecureClassLoader继承于CL;URLClassLoader继承于SecureClassLoader;PathClassLoader和DexClassLoader继承于BaseDexClassLoader。

    BCL是在Zygote进程的入口方法创建的,PCL是在Zygote进程创建SystemServer进程时创建的。

    参考:
    http://liuwangshu.cn/application/classloader/2-android-classloader.html

  • 相关阅读:
    初识ACM——幸好不用排序
    初识ACM——中文的信仰
    初识ACM——中文的信仰
    初识ACM——九九乘法表
    初识ACM——九九乘法表
    JavaScript 10 作用域
    JavaScript 09 简单的加法计算器
    JavaScript 08 函数
    JavaScript 07 类型转换
    JavaScript 06 基本数据类型
  • 原文地址:https://www.cnblogs.com/hacjy/p/8136099.html
Copyright © 2011-2022 走看看