在Android

时间:2016-04-14 02:34:12

标签: android string resources

我想知道是否最好将String值存储在strings.xml文件中,即使字符串非常大。更具体地说,我有一个游戏,我在其中显示游戏规则。所有字符的总和大于700个字符。目前我将这些长字符串分成较小的字符串(分段)。所以我想知道,拥有那些包含超过700个字符的长字符串会被认为是一种好习惯吗?我知道HEAP大小必须考虑可以解决多少字符,但我怀疑你可以轻松达到极限。从我正在阅读Java has the limit set to (2^31 - 1) characters and in Android to somewhere 4-64 million characters

2 个答案:

答案 0 :(得分:2)

我不认为在xml中存储字符串存在上限,因此将字符串存储在那里是最方便的。

如果真的想要使用不同的机制,你可以选择数据库或文件。 但是,与从xml文件中读取相比,从数据库和文件读取需要时间,并且需要更多代码才能实现相同的功能。

编辑:

我刚注意到你所指的字符串是游戏规则。所以我强烈建议使用strings.xml,因为android使用该XML来实现将应用程序翻译成不同的语言

来自localization的官方指南:

  

将所有字符串移动到strings.xml中。在构建应用程序时,请记住不要对任何字符串进行硬编码。而是将所有字符串声明为   缺省strings.xml文件中的资源,使其易于更新   和本地化。可以提取,翻译strings.xml文件中的字符串   并集成回您的应用程序(使用适当的限定符)   没有对编译代码进行任何更改。

答案 1 :(得分:0)

您可以使用文本文件并在要显示规则文本时读取该文件,而不是保存strings.xml中的所有长字符串。

您的布局文件将是这样的:

<ScrollView 
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:fillViewport="true"
android:layout_weight="1.0">
<TextView 
    android:id="@+id/subtitletv"
    android:textSize="18dp"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
/>

代码将是这样的:

subtitletv = (TextView)findViewById("R.id.helptext");
try {
        FileReader fr=new FileReader(selectedfile);
        BufferedReader br=new BufferedReader(fr);
        String line = null;
        try {
            while((line = br.readLine()) != null)
                 {
                      subtitletv.append(line);
                      subtitletv.append("/n");
                 }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

这将易于维护和访问。如果需要,进行必要的修改..