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

我应该在什么时候使用Android中的资产而不是原始资源?,android,android-resources,android-assets,Android,Android Resources,Android Assets,我正在进行Android研究,我刚刚介绍了资产和原始资源。我试图理解使用原始资源和资产的原因 它们都提供未编译的资源输入流 资产似乎比原始资源提供了更多的灵活性和功能性 a。您可以在assets下创建文件夹结构,但不能在raw b。您可以在assets文件夹中动态列出所有资源,但不能在raw文件夹中列出 那么,我为什么要在Android中使用原始资源呢?原始文件夹和资产文件夹之间的主要区别 由于raw是Resources(res)的子文件夹,Android将 为位于其中的任何文件自动生成I

我正在进行Android研究,我刚刚介绍了资产和原始资源。我试图理解使用原始资源和资产的原因

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

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

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

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


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

    原始
    文件夹和
    资产
    文件夹之间的主要区别

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

    • assets
      文件夹是一个“附录”目录。R类没有 不为放置在那里的文件生成ID,这不太兼容 使用一些Android类和方法。
      assets
      文件夹中的文件访问速度较慢,因为您需要获得该文件夹的句柄 基于字符串。但是,有些操作更容易由用户完成 将文件放置在此文件夹中,如将数据库文件复制到 系统的内存。没有(简单的)方法来创建Android XML 对资产文件夹中文件的引用

      • 从中,原始目录用于:

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

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



        在一行中,为
        raw/
        目录中的文件分配了一个资源ID,并且不能分组到子文件夹中,而如果需要,则使用
        assets/
        目录。

        添加到上面给出的答案中

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

        与原始资源相比,使用资产的一大优势是
        file:///android_asset/
        Uri前缀。这对于加载 将资源导入到WebView中。例如,用于访问位于中的资产 assets/foo/index.html在项目中,您可以调用
        loadUrl(“file:///android_asset/foo/index.html“”
        加载该HTML 进入网络视图


        @user370305嗨,新安卓操作系统的1MB限制现在还在吗?我找不到任何关于这个的文档。你知道我在哪里可以找到它吗?@GMsoF-没有任何具体的文件。但我有一些有用的链接给你。1.2.3.4.五,。只需按照sr no.@GMsoF进行检查-在
        /asset
        目录中放置大于1MB的文件有很多技巧。我从未对assets文件夹的文件大小进行过限制。你确定有这样的事情吗?是的,在Android 2.2或2.3之前,任何未压缩大小超过1MB的压缩资产文件都无法从APK中读取。这里提到的哪些是原始文件?如果你想将一个大文件复制到存储文件夹,最好的选择?@40 Love对于Android 2.3及以上版本,文件大小没有限制。你可以根据需要选择任何存储文件夹。主要区别在于访问这些文件的方式。您可以使用
        file:///android_res/
        指向原始资源的前缀。