Android中的资源和原始资源的原因

这是某种哲学问题。 我在Android世界的学习中,我刚刚介绍了资产和原始资源。

我试图了解使用原始资源与资产的原因。

  1. 他们都提供了一个未编译的资源inputstream。

  2. 资产似乎提供了更多的灵活性和function,然后原始资源。

    一个。 您可以在资产下创build文件夹结构,而不是在原始下

    湾 您可以在资产文件夹中dynamic列出所有资源,而不是在原始文件夹中。

那么,为什么我会在Android中使用原始资源?

谢谢。

raw文件夹和Assets文件夹之间的主要区别。

  • 由于raw是Resources(res)的子文件夹,Android会自动为其中的任何文件生成一个ID 。 然后这个ID被存储在一个R class ,它将作为一个文件的引用,这意味着它可以很容易地从其他Android类和方法,甚至在Android XML文件中访问。 使用自动生成的ID是在Android中访问文件的最快方式。

  • Assets文件夹是一个“附录”目录。 R类不会为放置在其中的文件生成ID ,所以它与某些Android类和方法的兼容性较差。 另外,访问里面的文件要慢得多, 因为你需要根据一个String来获得一个句柄 。 但是,通过将文件放入此文件夹中,可以更轻松地完成某些操作,例如将数据库文件复制到系统内存。 没有(简单)的方法来创build一个Android资源文件夹内的文件的XML参考。

从Android文档中 , raw/目录用于:

任意文件以原始格式保存。 要使用原始InputStream打开这些资源,请使用资源ID(即R.raw.filename 调用Resources.openRawResource()

但是,如果您需要访问原始文件名和文件层次结构,则可以考虑在assets/目录中保存一些资源(而不是res / raw /)assets /中的文件没有给定资源ID,所以只能使用AssetManager读取它们。


在一行中, raw/目录中的文件不是由平台编译的而是被分配了一个资源ID并且不能被分组到子文件夹中,而如果你想以其他方式使用assets/目录。