首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Resources.getIdentifier替代

Resources.getIdentifier替代
EN

Stack Overflow用户
提问于 2018-08-10 15:26:14
回答 1查看 243关注 0票数 0

我有一些ImageViews (~10),我想在代码中操作。我没有逐行查找它们,而是考虑通过Resources.getIdentifier方法循环和查找视图。然而,根据正式文件的说法,这是不可取的。

注:不鼓励使用此功能。按标识符检索资源比按名称检索资源要有效得多。

是否有一个更快、更有效的方法可用,或者我会更好地找到我的观点手动(不循环)?

EN

回答 1

Stack Overflow用户

发布于 2022-11-06 20:32:29

到目前为止,我发现了两个替代方案!( product_json.json) ,假设您的文件名为)!

  • 您可以将一个文件名为product_json的文件放在res/raw文件夹中,并按如下方式进行访问。 val inputStream: InputStream = resources.openRawResource(R.raw.product_json)
  • 或者,您可以将您的文件放在assets文件夹中(如果不存在,欢迎您创建一个!)如下所示。 val inputStream: InputStream = assets.open(getString("project_json")

Note:assets.open(“file_name_with_extension”),例如,assets.open("product_json.json")

使用上面的第1点比使用val inputStream: InputStream = resources.openRawResource( resources.getIdentifier(getString(R.string.product_json), "raw", packageName)访问资源要快,因为getIdentifier()必须对所有字符串资源进行迭代。这是非常缓慢的,不建议使用,因此IDE静态分析器显示警告“使用此函数是不可取的,因为资源反射使得执行构建优化和代码编译时验证变得更加困难。按标识符(例如R.foo.bar)检索资源比按名称检索资源(例如getIdentifier("bar”、"foo“、空))要高得多。使用val inputStream: InputStream = resources.openRawResource(R.raw.product_json)更好,因为系统只需对原始资源进行迭代。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51789705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档