美文网首页
14.安卓的类加载机制总结

14.安卓的类加载机制总结

作者: 任振铭 | 来源:发表于2019-11-08 19:21 被阅读0次

总结讲究的就是简练:

ClassLoader创建时机

应用启动时,也就是执行ActivityThread的main方法,进入到AMS(ActivityManagerService)中的bindApplication()方法开始创建Application,ClassLoader也就是在这里被创建的,并且ClassLoader创建于Application创建之前(mActivityThread.mInstrumentation.newApplication()),最终是在类ApplicationLoaders中创建了PathClassLoader,也就是说安卓中的ClassLoader就是PathClassLoader

class ApplicationLoaders
    ......
    public ClassLoader getClassLoader(String zip, String libPath, ClassLoader parent)
    {
        ......
        PathClassLoader pathClassloader =
                new PathClassLoader(zip, libPath, parent);
        ......
     }

ClassLoader加载Dex的时机

也就是ClassLoader创建的时候,加载了Dex文件,可以看到构造中传递的第一个参数就是Dex路径,之后将路径封装到DexPathList对象中,在DexPathList构造方法中解析了路径资源,并放入了dexElements数组中,以备后边加载的时候直接从这个数组中去取

public DexPathList(ClassLoader definingContext, String dexPath,
            String libraryPath, File optimizedDirectory) {
        // save dexPath for BaseDexClassLoader
        this.dexElements = makePathElements(splitDexPath(dexPath), optimizedDirectory,suppressedExceptions);
}

ClassLoader加载类的过程(以Activity为例)

ClassLoader通过loadClass方法加载类,看源码最终是在BaseDexClassLoader(PathClassLoader的父类)中的findClass方法,里边就是从上边提到的DexPathList中取出的对应的Class

public class BaseDexClassLoader extends ClassLoader 
    private final DexPathList pathList;
    @Override
    protected Class<?> findClass(String name) throws ClassNotFoundException {
        ......
        Class c = pathList.findClass(name, suppressedExceptions);
        ......
        return c;
    }

相关文章

  • 安卓类加载机制

    热修复、插件化很多技术都是基于安卓类加载机制实现,所以对安卓类加载机制了解很有必要

  • 14.安卓的类加载机制总结

    总结讲究的就是简练: ClassLoader创建时机 应用启动时,也就是执行ActivityThread的main...

  • 知识总结之 插件化基础 java反射与代理

    Java平台的反射机制是代码动态加载和调用的基本途径,在安卓系统源码中也用到了大量的反射动态加载类。反射也是安卓平...

  • 3:类加载机制深度解析(Tomcat打破双亲委派机制)(文末有项

    1:Tomcat的类加载机制 2:Tomcat的类加载机制流程图 3:Tomcat的类加载机制总结 4:代码实战 ...

  • 类加载机制(一)

    加载机制系列类加载机制(一)类加载机制(二)类加载机制(三) 类加载机制 1.JVM把class文件加载到内存,对...

  • 类加载机制(三)

    加载机制系列类加载机制(一)类加载机制(二)类加载机制(三)类加载器 这里引用尚学堂的的几张图片 demo: 结果:

  • JVM——类加载机制

    前言 今天就来介绍类的加载机制以及双亲委派机制。 JVM 类加载机制 JVM 类加载的五个阶段 JVM 类加载机制...

  • 类加载机制(二)

    加载机制系列类加载机制(一)类加载机制(二)类加载机制(三)类的加载全过程中的主动引用与被动引用 类的主动引用(会...

  • 类加载机制

    类加载机制 类加载机制是指 .class文件加载到JVM,并形成Class对象的机制。 类加载机制可以在运行时动态...

  • 从萌新的角度理解Java类加载机制

    类加载机制 本文主要是对java中类加载机制的入门级别文章,主要介绍类加载机制基本概念,以及类加载机制主要内容。本...

网友评论

      本文标题:14.安卓的类加载机制总结

      本文链接:https://www.haomeiwen.com/subject/phmwbctx.html