Android资源加载流程及资源替换方案

本文详细探讨了Android资源的加载流程,从Context到Resources再到AssetManager,深入理解NativeAssetManager的处理。接着介绍了资源替换方案,包括Resources包装、资源缓存和AssetManager的利用,以及各种方案的优缺点。文章还讨论了资源冲突问题,特别是换肤和插件场景下的冲突处理,提出了静态编译和动态映射等解决策略,并以VirtualApk为例阐述了插件资源的处理方法。
摘要由CSDN通过智能技术生成

来源于慕课网。

1 资源加载流程

我们所说的资源是指assets,res目录下的drawable,layout,color,string,id等等,obtainStyledAttributes。方法调用都是从context到Resources,最后到AssetManager。然后在NativeAssetManager里处理。见图。
在这里插入图片描述

2 资源替换方案

从资源加载流程可以发现,替换方案从Resources或者AssetManager下手。

2.1 资源包装流

包装Resources,当然是对其大部分方法都要包装。优先去加载我们添加进去的资源。没有找到,则去走系统的流程。是一个麻烦的过程。
在这里插入图片描述

2.2 资源缓存

系统Resources里获取资源时,会先从缓存里获取,获取不到则去AssetManager里找。所以可以通过反射将要加载的资源添加进缓存。这样的过程很明显受限于系统缓存的内容,而且由于不同的版本字段会有所变化,适配过程繁琐。
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值