これらの両方が1 MBのヒープメモリを超えると、自分のアクティビティを漏らしています。私は1MB以上のconacts i、eを削除する必要があります。 2500件を超える連絡先getContentResolver()。クエリの問題
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
Cursor cur = managedQuery(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
代替策または回避策を教えてください。 それから私はどのように私は一度に100〜200人の連絡先を
if (cur.moveToFirst()) {
do {
String lookupKey = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY));
Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey);
cr.delete(uri, null, null);
} while (cur.moveToNext());
}
cur.close();
削除することができますか?または他の方法ですか?
ログイン:
03-02 14:26:57.317: E/CursorWindow(5357): need to grow: mSize = 1048576, size = 216, freeSpace() = 135, numRows = 2616
03-02 14:26:57.317: E/CursorWindow(5357): not growing since there are already 2616 row(s), max size 1048576
03-02 14:26:57.317: E/CursorWindow(5357): The row failed, so back out the new row accounting from allocRowSlot 2615
03-02 14:26:57.317: E/Cursor(5357): Failed allocating fieldDir at startPos 0 row 2615
ArrayList oparray = new ArrayList (); \t \t // ArrayList oparray = new ArrayList; \t \t ContentProviderOperation.Builder objBuilder = ContentProviderOperation.newDelete(ContactsContract.Contacts.CONTENT_URI); \t \t objBuilder.withYieldAllowed(true); \t \t //objBuilder.withExpectedCount(12); \t \t ContentProviderOperation obj = objBuilder.build(); \t \t oparray.add(obj); \t \t \t \t oparray.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI) \t \t \t \t .build())。 –
ToolFan
Plus ContentProviderResult [] res = getContentResolver()。applyBatch(ContactsContract.AUTHORITY、oparray); ' – ToolFan
これは連絡先を削除することではありません。 – ToolFan