ลองหาทาง import call log จากมือถือเก่า ทั้งหมด (ประมาณ 9207 record)
โดยมาในรูปแบบไฟล์ csv
“0899999999” 10 1259558672212 0
“0812345978” 23 1254558611234 1
“0810920827” 107 1250572311517 1

คอลัมแรกคือ เบอร์ คอลัมสอง คือ เวลาที่ใช้โทรเป็นวินาที คอลัมสาม คือ เวลาขณะโทรออก unix time เป็น มิลลิวินาที และคอลัมสุดท้ายคือ ประเภทของ การโทร 0 โทรเข้า 1 โทรออก 2 miss

โดยเขียนโปรแกรมดังแสดง
FileReader fIn;
ContentValues values = new ContentValues();
try {
fIn = new FileReader(“/sdcard/calllog.csv”);
BufferedReader in = new BufferedReader(fIn);
for(j=0;j3){
Integer.valueOf(bb[3]);
values.put(CallLog.Calls.NUMBER, bb[0]);
values.put(CallLog.Calls.DATE, Long.valueOf(bb[2]));
values.put(CallLog.Calls.DURATION, Integer.valueOf(bb[1]));
values.put(CallLog.Calls.TYPE, Integer.valueOf(bb[3]));
values.put(CallLog.Calls.NEW, 1);
values.put(CallLog.Calls.CACHED_NAME, “”);
values.put(CallLog.Calls.CACHED_NUMBER_TYPE, 0);
values.put(CallLog.Calls.CACHED_NUMBER_LABEL, “”);
getContentResolver().insert(CallLog.Calls.CONTENT_URI, values);
j++;
}
}

พบว่า ช้ามาก ๆ ใช้เวลา ชั่วโมงกว่า ๆ import ได้แค่ 4000 กว่า record
และยิ่งช้าลง ช้าลง
เท่าที่ทดสอบ มันช้าที่คำสั่ง
getContentResolver().insert(CallLog.Calls.CONTENT_URI, values);
ซึ่งจะยิ่งช้าขึ้นเรื่อย ๆ ตามจำนวน call log ที่มีมากขึ้น

ถามว่า มีวิธีเพิ่ม call log เข้าไป โดยวิธีอื่นที่เร็วกว่าผ่าน content provider แบบนี้หรือไม่ครับ หรือว่ามีวิธีปรับโค๊ดให้เร็วขึ้นมาก ๆ ได้อีก