9-12

2017-09-12  本文已影响0人  汪之涛

今天来看Android中的ClassLoader

ClassLoader结构图

当你第一次听说各种ClassLoader的时候,是不是觉得每种ClassLoader都是相互独立的部分,需要的时候调用即可,但是实际在Android系统中,可以看到ClassLoader采用了继承的模式,那么为什么会采用这种继承的模式呢?

首先我们先看继承模式能给我们带来什么?

在上面场景中,继承模式最大的不同就是能够拥有上层父类的方法,那么ClassLoader为什么需要?ClassLoader是用来加载Class的,我想可能的情况有两种:

1. 本层ClassLoader加载不到。

2. 上层已经加载过了。

深入源码,一探究竟:

双亲加载模式

可以看到本层ClassLoader在找不到class的情况下确实会去找父ClassLoader,于是验证了我们的第二种想法。

至于第一种可能,由于加载class只是给出路径即可,所以并不牵扯到权限问题。

上一篇 下一篇

猜你喜欢

热点阅读