2.21 ResourceManager源码解析
2.13.1 Drawable加载流程
Context#getResource().getDrawable(R.xxx.xxx)
ComtextImpl#getResource
- >ResourcesManager#getResource
->ResourcesManager#getOrCreateResources
-
- 通过
ResourceKey
从map
缓存获取资源对象
- 通过
-
- 没有缓存则从
ResourcesImpl#createResourceImpl()
加载资源
- 没有缓存则从
-
ResourcesImpl#createResourceImpl()
加载资源, 通过创建AssetManager
获取系统路径解析resources.arsc
映射表, 获取资源的索引Resource#loadDrawable
->mAssets#openAsset()
->Drawable#createFromResourceStream
, 加载资源文件