为什么不鼓励使用Resources.getIdentifier()

时间:2010-06-21 19:40:52

标签: android

在Android SDK中,有一条评论说按标识符而非名称检索资源效率更高。

这是不鼓励使用getIdentifier()的唯一原因吗?

我需要以编程方式访问数百个资源中的一个,到目前为止,我的设计使得通过名称而不是标识符更容易访问原始资源。

2 个答案:

答案 0 :(得分:5)

因为比较整数比比较字符串要快得多,我猜想资源会被ID进行散列,所以如果你通过ID获取资源,他们只能获取一小部分资源并执行快速搜索。如果按名称搜索,则必须遍历所有资源并进行慢速字符串比较。

答案 1 :(得分:2)

是的,getIdentifier()比仅通过ID检索资源更慢/效率更低,我认为它使用反射来从生成的R类中获取标识符。但是我不知道有任何其他理由不使用它......看看array resources,也许你可以使用它们。