android 资源加载源码分析

分析:一张图片资源是如何加载到界面的呢?写一个ImageView看看吧。。。


test

进入ImageView类中看看如何加载的,如下图:

好了,这个方法里 Resources是直接赋值的,找不到其他方法,,那如何得到Resources呢??想到在代码中获取资源,如图


Test

所以,可以看看Context里的getResource()方法。。。那么Context的实现是ContextImpl,那就去里面看看吧


至此,找到了所以方法的实现啦 。。。那么 一些参数如何获取的呢,如下:

总结:

AssetManager的创建是通过直接实例化对象调用了一个addAssetPath(path)方法把应用的apk路径添加到AssetManager,addAssetPath()方法请看源码解释。

创建好ResourcesImpl之后会再去缓存中找Resource如果没有,那么则会创建Resource并将其缓存,创建我们看到的源码是new Resources(classLoader),resources.setImpl(impl) 而不同的版本可能是 new Resources(assets, dm, config, compatInfo) 具体请看6.0源码。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容