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

Mir*_*mer 5 performance resources android

我试图弄清楚访问android字符串资源之间的区别。以下报价对我来说并不明确:

参照访问速度快

直接访问速度慢

通过引用方式访问setTitle(R.string.title)

直接访问是指:setTitle(getResources().getString(R.string.title))

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

通过引用访问

for(int i = 0; i< 100000; i++) {
    setTitle(R.string.app_name);
}
Run Code Online (Sandbox Code Playgroud)

这花费了5090毫秒。相反,我使用直接访问来运行相同的代码:

for(int i = 0; i< 100000; i++) {
    setTitle(getResources().getString(R.string.app_name));
}
Run Code Online (Sandbox Code Playgroud)

这花费了5191毫秒。我使用Android 4.2.2进行了测试。

因此,对我来说,看起来就像使用资源的方式无关紧要。在早期的android版本中这有关系吗?在实际设备上这有关系吗?换句话说:选择哪种访问方式有关系吗?

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

njz*_*zk2 3

看看代码:

(活动中)

public void setTitle(int titleId) {
    setTitle(getText(titleId));
}
Run Code Online (Sandbox Code Playgroud)

(在上下文中)

public final CharSequence getText(int resId) {
    return getResources().getText(resId);
}
Run Code Online (Sandbox Code Playgroud)

所以基本上,这是完全相同的事情。

Resource.getIdentifier(String, String, String)然而,如果您使用查找资源的 ID,则速度要慢得多。