将getResources()调用十次Android

时间:2014-07-23 11:25:51

标签: android string getresource

正如我的问题所说,我遇到的情况是我需要使用getResources()获取十个不同的字符串,然后将它们与用户输入的字符串进行比较。
这就是我目前正在做的事情:

if(string == getResources().getString(R.string.x)) 

由于这段代码将在R.java中重复十次不同的字符串十次,我想知道是否会通过多次调用getResources()来降低性能。

是否有更简单的解决方案,例如从getResources()创建一个对象,然后从该对象一次获取一个字符串?

对不起,如果我喋喋不休,我是新来的。

谢谢!

4 个答案:

答案 0 :(得分:2)

然后你可以这样做:

Resources res = yourContext.getResources();
//use this res variable instead of getResources() function a small example
Bitmap bitmap = BitmapFactory.decodeResource(res,R.id.ic_launcher);

答案 1 :(得分:0)

另一种方法是将您获得的字符串添加为string-array

<string-array name="string_array_name">
    <item>text_string</item>
    <item>text_string</item>
</string-array>

获取你的数组:

String[] myArr = getResources().getStringArray(R.array.string_array_name);

并循环播放它们......您将拨打getResources()一次......

但是无论如何资源对象是整个应用程序中的共享对象而你只是在调用它的getter所以没有性能就在那里

答案 2 :(得分:0)

您可以<{1}}

创建 数组

string.xml

string.xml

在您的java代码中,您可以将其作为

进行访问
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="item_array">
        <item>item 1</item>
        <item>item 2</item>
        <item>item 3</item>
        <item>item 4</item>
...
    </string-array>
</resources>

答案 3 :(得分:0)

为避免重复调用getResources(),请在资源类型的变量之前创建,并使用它代替调用,如下所示:

Resources res = getResources();
if (string == res.getString(R.string.x);

通过这种方式,您还可以将变量作为参数传递给其他方法/函数,而在所有代码中仅对getResources()进行一次调用。