我正在试图找出访问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版本中这有关系吗?这在真实设备上有用吗?换句话说:我选择哪种访问权限是否重要?
如果需要更多测试参数,我很乐意给他们。感谢您抽出宝贵时间,非常感谢。
答案 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,那么速度会慢得多。