Android类加载ClassLoader双亲委托机制详解

 更新时间:2023年07月07日 11:18:14   作者:载渔之洲  
这篇文章主要为大家介绍了Android类加载ClassLoader双亲委托机制详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

一、ClassLoader类图关系

ClassLoader、BootClassLoader、BaseDexClassLoader等之间关系,如下如:

二、双亲委托机制

1、定义

如果某个类加载器在加载类时,先不会自己去尝试加载这个类,而是首将加载任务委托给父类加载器,依次递归,如果父类加载器可以完成类加载任务,就成功返回;只有父类加载器无法完成此加载任务或者没有父类加载器时,才会交给自己尝试加载。

如:可以看到创建 ClassLoader 需要接收一个 ClassLoader parent 参数。这个 parent 的目的就在于实现类加载的双亲委托

protected Class<?> loadClass(String name, boolean resolve)
        throws ClassNotFoundException
    {
            // First, check if the class has already been loaded
            // 检查class是否有被加载
            Class<?> c = findLoadedClass(name);
            if (c == null) {
                try {
                    if (parent != null) {
                        //如果parent不为null,则调用parent的loadClass进行加载
                        c = parent.loadClass(name, false);
                    } else {
                        //parent为null,则调用BootClassLoader进行加载
                        c = findBootstrapClassOrNull(name);
                    }
                } catch (ClassNotFoundException e) {
                    // ClassNotFoundException thrown if class not found
                    // from the non-null parent class loader
                }
                if (c == null) {
                    // If still not found, then invoke findClass in order
                    // to find the class. 
                    // 如果都找不到就自己查找
                    c = findClass(name);
                }
            }
            return c;
    }

2、双亲作用

1)、避免重复加载,当父加载器已经加载了该类的时候,就没有必要子ClassLoader再加载一次。

2)、安全性考虑,防止核心API库被随意篡改。

以上就是Android类加载ClassLoader的详细内容,更多关于Android类加载ClassLoader的资料请关注脚本之家其它相关文章!

相关文章

  • Android raw 目录下视频的缩略图的获取

    Android raw 目录下视频的缩略图的获取

    这篇文章主要介绍了 Android raw 目录下视频的缩略图的获取的相关资料,需要的朋友可以参考下
    2017-07-07
  • Android顶部状态栏透明化并释放空间的两种实现方法

    Android顶部状态栏透明化并释放空间的两种实现方法

    这篇文章主要介绍了Android顶部状态栏透明化并释放空间的两种实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-03-03
  • 简单实现Android刮刮卡效果

    简单实现Android刮刮卡效果

    这篇文章主要教大家如何简单的实现Android刮刮卡效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Android截屏分享功能

    Android截屏分享功能

    最近项目经理交给我一个任务,要求实现android截屏功能,包括Android截屏获取图片、将图片保存到本地、通知系统相册更新、通过微信、QQ、微博分享截屏图片。小编把实现思路分享到脚本之家平台,需要的朋友参考下
    2017-12-12
  • Android checkbox的listView具体操作方法

    Android checkbox的listView具体操作方法

    这篇文章主要介绍了Android checkbox的listView具体操作方法,重点就是存储每个checkbox的状态值,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • android开发实现列表控件滚动位置精确保存和恢复的方法(推荐)

    android开发实现列表控件滚动位置精确保存和恢复的方法(推荐)

    下面小编就为大家带来一篇android开发实现列表控件滚动位置精确保存和恢复的方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • Kotlin类对象class初始化与使用

    Kotlin类对象class初始化与使用

    Kotlin 是一种追求简洁的语言,在类上也下了不少功夫,放弃了很多c++ 中类非常复杂的概念,其实对于类可以这样来理解,为了复用的方便性和完整性,我们把变量和函数组合在一起,形成了类的概念
    2022-12-12
  • Android okhttp的启动流程及源码解析

    Android okhttp的启动流程及源码解析

    这篇文章主要介绍了Android okhttp的启动流程及源码解析,帮助大家更好的理解和学习使用Android开发,感兴趣的朋友可以了解下
    2021-03-03
  • 详解Android平台JSON预览(JSON-handle)

    详解Android平台JSON预览(JSON-handle)

    这篇文章主要介绍了Android平台JSON预览(JSON-handle),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • Android Studio中CodeStyle模板的配置方式

    Android Studio中CodeStyle模板的配置方式

    这篇文章主要介绍了Android Studio中CodeStyle模板的配置方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03

最新评论