我应该何时使用资产而不是Android中的原始资源?

Mor*_*lus 144 android android-assets android-resources

我正处于Android世界的学习阶段,我刚刚介绍了资产和原始资源.我试图了解使用原始资源与资产的原因.

  1. 它们都提供未编译的资源输入流.

  2. 似乎Assets提供了比Raw资源更多的灵活性和功能.

    一个.您可以在Assets下创建文件夹结构,而不是在Raw下创建

    湾 您可以在assets文件夹中动态列出所有资源,而不是在Raw文件夹中.

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

use*_*305 176

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

  • 由于raw是Resources(res)的子文件夹,因此Android会自动生成一个ID位于其中的任何文件.这 ID随后被存储在一个R class将充当一个文件的引用,这意味着它可以从其他Android类和方法,甚至在Android的XML文件可以轻松访问.使用自动生成的ID是访问Android中文件的最快方式.

  • Assets文件夹是"附录"目录.在R类别不生成的ID用于放置在那里的文件,因此它少了一些Android的类和方法兼容.此外,访问其中的文件要慢得多,因为您需要根据String获取它的句柄.但是,通过将文件放在此文件夹中可以更轻松地完成某些操作,例如将数据库文件复制到系统的内存中.没有(简单)方法来创建对Assets文件夹内的文件的Android XML引用.

  • 我从来没有资产文件夹的文件大小限制.你确定有这样的事吗? (9认同)
  • @GMsoF - 没有任何具体的文件.但是我有一些有用的链接.1. http://blog.rossgreenhalf.com/2010/12/13/android-file-size-limits/ 2. http://stackoverflow.com/questions/11276112/is-it-possible-to-add- specific-files-uncompressed-to-a-android-apk-using-build-x 3. http://stackoverflow.com/questions/6809651/documentation-for-aapt-element-in-ant-script 4. http: //elinux.org/Android_aapt和5. http://android-developers.blogspot.in/2012/03/android-apps-break-50mb-barrier.html按照sr no进行操作. (6认同)
  • @ user370305嗨,现在新的Android操作系统还有1MB的限制吗?我找不到任何谈论这个的文档.你知道我在哪里可以找到它吗? (4认同)
  • @GMsoF - 在`/ asset`目录中有很多技巧可以将文件大小大于1 mb. (2认同)
  • 是的,在Android 2.2或2.3之前,无法从APK读取任何压缩大小超过1 MB的压缩资产文件.这里提到https://groups.google.com/forum/#!topic/android-developers/lguGFJD-JRs (2认同)

Pri*_*nce 30

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

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

但是,如果需要访问原始文件名和文件层次结构,可以考虑在assets/目录中保存一些资源(而不是res/raw /).资产/中的文件未获得资源ID,因此您只能使用AssetManager读取它们.


在一行中,raw/目录中的文件不是由平台编译的,被分配了资源ID,并且不能分组到子文件夹中,否则如果您希望使用该assets/目录.