2

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

4

1 に答える 1