Android中的资源和原始资源的原因
这是某种哲学问题。 我在Android世界的学习中,我刚刚介绍了资产和原始资源。
我试图了解使用原始资源与资产的原因。
-
他们都提供了一个未编译的资源inputstream。
-
资产似乎提供了更多的灵活性和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/
目录。