Java Android字符串资源
我的应用程序需要大约50000个不同的字符串。我可以将它们存储在数据库中,但我想知道是否可以将它们存储为字符串资源Java Android字符串资源,java,android,sqlite,Java,Android,Sqlite,我的应用程序需要大约50000个不同的字符串。我可以将它们存储在数据库中,但我想知道是否可以将它们存储为字符串资源 在string.xml文件中存储大量字符串是一种好方法吗 我们可以在string.xml文件中存储多少字符串 按名称搜索字符串的成本? 像 代码段: private String getStringResourceByName(String aString) { String packageName = getPackageName(); int resId =
- 在
文件中存储大量字符串是一种好方法吗string.xml
- 我们可以在
文件中存储多少字符串string.xml
- 按名称搜索
字符串的成本? 像
private String getStringResourceByName(String aString) {
String packageName = getPackageName();
int resId = getResources().getIdentifier(aString, "string", packageName);
return getString(resId);
}
还有其他方法可以使用吗?这个答案有点难,但让我试试: 我们可以在
string.xml
文件中存储多少字符串
首先,资源id在R类中编译为常量。也就是说,比如说:
类文件结构的16位常量池计数字段(§4.1)将每类或每接口常量池限制为65535个条目。这是对单个类或接口的总体复杂性的内部限制
因此,50k字符串资源似乎是可能的。作为怀疑论者,经过一点实验后,您似乎可以在一段时间内拥有多达33k的字符串资源。超出此限制后,会产生编译时错误“常量过多”
按名称搜索字符串的成本
在链接的项目中,我对getResources().getIdentifier(…)进行了基本的比较代码>(按名称)和getResources().getString(id)代码>(按id)
按id获取比按名称获取快13倍
我还将其与SQLite进行了比较<代码>getResources().getIdentifier(..)
比name='string\u x'
SELECT*表格快1.5倍
在string.xml
文件中存储大量字符串是一种好方法吗
伊姆霍,不
优点:
2^16
限制涉及所有翻译这篇文章可以帮助你在应用程序中附带一个预填充的数据库:这很合乎逻辑。如果有人能理解,但这只回答了第2点…@单向不完全。请阅读完整的问题为什么不使用SQLite文件中的数据?@单向什么类型的更详细信息?