我有一些ImageViews (~10),我想在代码中操作。我没有逐行查找它们,而是考虑通过Resources.getIdentifier方法循环和查找视图。然而,根据正式文件的说法,这是不可取的。
注:不鼓励使用此功能。按标识符检索资源比按名称检索资源要有效得多。
是否有一个更快、更有效的方法可用,或者我会更好地找到我的观点手动(不循环)?
发布于 2022-11-06 20:32:29
到目前为止,我发现了两个替代方案!( product_json.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)更好,因为系统只需对原始资源进行迭代。
https://stackoverflow.com/questions/51789705
复制相似问题