5

我试图找出访问 android string resources之间的区别。以下引用对我来说不清楚:

通过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 版本中是否重要?这对真实设备有影响吗?换句话说:我选择哪种访问方式重要吗?

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

4

1 回答 1

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。

于 2013-08-13T14:18:46.950 回答