Java 从资源加载大字符串数组时,Android-可引用溢出(最大值为512)

Java 从资源加载大字符串数组时,Android-可引用溢出(最大值为512),java,android,string,resources,overflow,Java,Android,String,Resources,Overflow,我在资源文件arrays.xml中有一个很大的字符串数组,大约有800项 当有人试图阅读它时: String[] arr = context.getResources().getStringArray(R.array.text); 我得到一个错误: ReferenceTable overflow (max=512) Last 10 entries in JNI local reference table: 502: 0x44ea8b28 cls=Ljava/lang/String; (28 b

我在资源文件arrays.xml中有一个很大的字符串数组,大约有800项 当有人试图阅读它时:

String[] arr = context.getResources().getStringArray(R.array.text);
我得到一个错误:

ReferenceTable overflow (max=512)
Last 10 entries in JNI local reference table:
502: 0x44ea8b28 cls=Ljava/lang/String; (28 bytes)
503: 0x44ea8c98 cls=Ljava/lang/String; (28 bytes)
504: 0x44ea8df0 cls=Ljava/lang/String; (28 bytes)
505: 0x44ea8f20 cls=Ljava/lang/String; (28 bytes)
506: 0x44ea8f98 cls=Ljava/lang/String; (28 bytes)
507: 0x44ea9070 cls=Ljava/lang/String; (28 bytes)
508: 0x44ea91a0 cls=Ljava/lang/String; (28 bytes)
509: 0x44ea9328 cls=Ljava/lang/String; (28 bytes)
510: 0x44ea94c8 cls=Ljava/lang/String; (28 bytes)
511: 0x44ea9618 cls=Ljava/lang/String; (28 bytes)
JNI local reference table summary (512 entries):
3 of Ljava/lang/Class; 172B (2 unique)
506 of Ljava/lang/String; 28B (506 unique)
1 of Ljava/lang/String; 36B
1 of [Ljava/lang/String; 28B
1 of [Ljava/lang/String; 3212B
Memory held directly by native code is 17788 bytes
Failed adding to JNI local ref table (has 512 entries)

如何解决这个问题?

上面说溢出最大值为512。我建议尝试一个接一个地提取字符串,看看它是否会在第512项中抛出此错误。不得不说我对这个话题不太了解,只是猜测而已。在错误中看起来是这样的,所以打开两个数组或一个动态列表。此链接应该对您有所帮助。