使用资源文件,我创建了一个大 HashMap
HashMap<String, String> bigHash = new HashMap<String, String>();
public void createHash(){
String [] items = getResources().getStringArray(R.array.dual_strings);
String [] temp;
for ( String s : items ){
temp = s.split("@");
bigHash.put(temp[0],temp[1]);
}
}
dual_string.xml 充满了像这样的记录 “ sleep @每天最好睡 6 小时以上”
但是,我尝试使用一个大的(~1000 项)dual_strings.xml 文件,应用程序在启动后立即崩溃。 查看 LogCag “dalvikvm 无法添加到 JNI 本地引用表(有 512 个条目)”
我可以做些什么来从我的长资源文件中创建和使用大哈希值吗? 谢谢
最佳答案
这看起来像是 Android 的 getStringArrayResources native 代码中的错误。我发现已经有一个关于这个的错误。在 native 代码中很容易看出原因(引用是在循环中创建的,但未清除)。
现在,您必须解决这个错误。您必须将字符串数组拆分为更小的 block ,每个 block <500 个字符串,或者编写您自己的自定义字符串数组加载方法。也许其他人可以提出更好的解决方案。
关于android - 当 hashmap > 512 时 JNI 溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5774335/