我的应用程序将 VCard 检索为字符串,并通过 StringBuilder 将所有内容组合成一个大字符串
public String getVcardStrings() throws Exception {
Cursor cursor = context.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
StringBuilder builder = new StringBuilder();
if (cursor.moveToFirst()) ;
do {
String s = getVCardStringFromContact(cursor);
L.d("VCARD", s);
builder.append(s);
} while (cursor.moveToNext());
cursor.close();
L.d("VCARD", "Output: \n" + builder.toString());
return builder.toString();
}
每个 getVCardAsString() 调用的输出都是正确的。它包含所有数据。但是调用 builder.toString() 只返回 1,5 个联系人的 vcard 数据,大约是 4kb 的文本数据,其余的根本就丢失了!
也不例外,我读过 StringBuilders 的容量理论上可以达到 4GB。现在我的问题是,这里发生了什么?