两种访问android字符串资源的方法

时间:2013-08-13 14:07:28

标签: android performance resources

我正在试图找出访问android字符串资源之间的区别。我不清楚以下引用:

  

通过referene访问很快

     

直接访问很慢

以引用方式访问表示:setTitle(R.string.title)

直接访问表示:setTitle(getResources().getString(R.string.title))

现在我在android模拟器上运行了一些速度测试:

以引用方式访问

for(int i = 0; i< 100000; i++) {
    setTitle(R.string.app_name);
}

5090毫秒。相反,我使用直接访问

运行相同的代码
for(int i = 0; i< 100000; i++) {
    setTitle(getResources().getString(R.string.app_name));
}

5191毫秒。我用Android 4.2.2进行了测试。

所以对我而言,看起来很像我使用资源的方式无关紧要。 在早期的Android版本中这有关系吗?这在真实设备上有用吗?换句话说:我选择哪种访问权限是否重要?

如果需要更多测试参数,我很乐意给他们。感谢您抽出宝贵时间,非常感谢。

1 个答案:

答案 0 :(得分:3)

看看代码:

(在活动中)

public void setTitle(int titleId) {
    setTitle(getText(titleId));
}

(在上下文中)

public final CharSequence getText(int resId) {
    return getResources().getText(resId);
}

基本上,它完全是一样的。

但是,如果您使用Resource.getIdentifier(String, String, String)查找资源的ID,那么速度会慢得多。