我应该在什么时候使用这些资源,而不是 Android 中的原始资源?

我正在研究安卓系统,刚刚谈到了资产和原始资源。我试图理解使用原始资源与资产的原因。

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

  2. 资产似乎比原始资源提供了更多的灵活性和功能性。

    可以在 assets下创建文件夹结构,但不能在 raw下创建

    可以在 assets文件夹中动态列出所有资源,但不能在 raw文件夹中列出。

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

55459 次浏览

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

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

  • assets文件夹是一个 “附录”目录 不为放置在那里的文件生成 ID ,这不太兼容 使用一些 Android 类和方法。assets文件夹中的文件访问速度较慢 < strong > ,因为您需要获得对它的句柄 基于 String 将文件放置在此文件夹中,如将数据库文件复制到 没有(容易的)方法来创建一个 Android XML 引用“资产”文件夹中的文件。

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

以原始形式保存的任意文件。若要使用原始 InputStream打开这些资源,请使用资源 ID (即 R.raw 文件名)调用 OpenRawResource ()

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


在一行中,raw/目录中的文件是 < em > 不是由平台 编译的分配一个资源 ID不能分组到子文件夹中,而如果需要其他目录,则使用 assets/目录。

加上上面给出的答案..。

/res/string、/res/layout、/res/xml 文件等都会被编译成二进制格式。但是,如果将文件(包括 XML 文件)放在/res/raw/目录中,则不会将它们编译成二进制格式。

与使用原始资源相比,使用资产的一大优势是 file:///android_asset/ 尤里前缀。这对于加载 例如,用于访问位于 在您的项目中,您可以调用 loadUrl("file:///android_asset/foo/index.html")加载那个 HTML 进入网络视图。