美文网首页
ClassLoader

ClassLoader

作者: hiLily | 来源:发表于2017-11-21 15:21 被阅读9次

    Android中的class loader如上图,class loader使用双亲委托模型,简单说就是当一个classloader开始加载类的时候,它总是让它的parent去尝试加载,如果失败,那么再尝试自己加载,这个设计的好处是带来安全性,避免了伪造类

    DexClassLoader可以指定自己的optimizedDirectory,所以它可以加载外部的dex,因为这个dex会被复制到内部路径的optimizedDirectory;而PathClassLoader没有optimizedDirectory,所以它只能加载内部的dex,这些大都是存在系统中已经安装过的apk里面的。

    通过XXX.getClassLoader()可以知道这个class是由哪个classloader加载的

    一个运行的Android应用至少有2个ClassLoader,BootClassLoader(系统启动的时候创建的)以及PathClassLoader(应用启动时创建的)

    同一个Class = 相同的 ClassName + PackageName + ClassLoader,如果同一个类被不同classloader重复加载了会抛出异常

    相关文章

      网友评论

          本文标题:ClassLoader

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