私のアプリは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 に達すると読みました。今私の質問は、ここで何が起こっているのですか?