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

x9ybnkn6  于 2023-05-15  发布在  Android
关注(0)|答案(4)|浏览(98)

我在我的Android研究的中间,我只是涵盖了资产和原始资源。我试图理解使用原始资源与资产。
1.它们都提供了一个未编译的资源输入流。
1.看起来Assets比Raw资源提供了更多的灵活性和功能。
a.您可以在assets下创建文件夹结构,但不能在raw下创建
B.您可以在assets文件夹中动态列出所有资源,但不能在raw文件夹中列出所有资源。
为什么要在Android中使用Raw资源?

6yjfywim

6yjfywim1#

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

  • 由于raw是Resources(res)的子文件夹,因此Android会自动为其中的任何文件生成一个ID。然后,这个ID存储在R class中,该R class将充当文件的引用,这意味着可以从其他Android类和方法甚至Android XML文件中轻松访问它。使用自动生成的ID是在Android中访问文件的最快方式。
  • assets文件夹为**“appendix”目录。R类不会为放置在那里的文件生成ID,这与某些Android类和方法不太兼容。assets文件夹中的文件访问速度较慢,因为您需要基于String获取句柄**。但是,通过将文件放置在此文件夹中,可以更轻松地完成某些操作,例如将数据库文件复制到系统内存中。没有(简单的)方法来创建对Assets文件夹中文件的Android XML引用。
ee7vknir

ee7vknir2#

根据Android文档,***raw/目录用于:
以原始形式保存的任意文件。要使用原始 InputStream 打开这些资源,请使用资源ID(即 R.raw.filename)调用 Resources.openRawResource()
但是,如果您需要访问原始文件名和文件层次结构,则可以考虑将一些资源保存在
assets/目录 (而不是res/raw/) 中。assets/ 中的文件没有资源ID,因此只能使用 AssetManager 读取。
在一行中,raw/目录中的文件是not compiled by the platform
被分配了一个资源ID
不能被分组到子文件夹中 *,而如果您想要,则使用assets/目录。

h6my8fg2

h6my8fg23#

加上上面给出的答案……

**/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加载到WebView中。

p3rjfoxz

p3rjfoxz4#

当你需要访问原始文件名和文件层次结构时,你可以使用assest文件,比如直接使用音频,视频,文本文件。

相关问题