Android存储媒体文件:使用raw/文件夹或assets/文件夹



为什么选择一个而不是另一个?它们是如何存储在手机上的?

谢谢

对于资源,内置支持为不同的语言、操作系统版本、屏幕方向等提供替代方案,如下所述。这些都不是资产所能提供的。此外,API的许多部分都支持使用资源标识符。最后,资源的名称被转换为常量字段名,在编译时进行检查,因此代码和资源本身之间不匹配的可能性较小。这些都不适用于资产。

那么为什么要有一个assets文件夹呢?如果你想在运行时计算你想要使用的资产,这很简单。对于资源,您必须声明可能使用的所有资源id的列表,并计算该列表的索引。(这有点尴尬,如果资源集在开发周期中发生变化,则会引入错误的机会。)您可以使用getIdentifier通过名称检索资源ID,但是这会失去编译时检查的好处。资产也可以组织到文件夹层次结构中,这是资源不支持的。这是一种不同的数据管理方式。尽管资源涵盖了大多数情况,资产也有其偶尔的用途。

另一个区别:在库项目中定义的资源会自动导入到依赖于库的应用程序项目中。对于资产来说,这种情况不会发生;资产文件必须存在于应用程序项目的资产目录中。

最新更新