我的應用程序獲取電子名片爲字符串,並提出一起到大串通過的StringBuilderStringBuilder的似乎是出容量
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()onlly返回1,5個聯繫人的vcard數據,這是約4kb的文本數據,其餘的只是丟失!
沒有例外,我讀過StringBuilders的容量理論上可以達到4GB。現在我的問題是,這裏發生了什麼?
你在那裏有2個日誌行的輸出是什麼?你最終想用返回的字符串值做什麼? – SBerg413
它實際上返回字符串的一部分?或者你的意思是日誌輸出只是部分?第二種情況是正常的) – Leonidos
它不僅僅打印2個日誌行,它實際上打印了大約25行,一個完整的聯繫人和一個半。可能確實是一個記錄器的事情。從數據庫中讀取聯繫人之後立即將其更改爲立即寫入文件,現在這個「問題」已經過時了。無論如何,謝謝=) –