我想知道是否最好将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。
答案 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();
}
这将易于维护和访问。如果需要,进行必要的修改..