分析:一张图片资源是如何加载到界面的呢?写一个ImageView看看吧。。。
进入ImageView类中看看如何加载的,如下图:
好了,这个方法里 Resources是直接赋值的,找不到其他方法,,那如何得到Resources呢??想到在代码中获取资源,如图
所以,可以看看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源码。