2013-03-16 1 views
0

Я проверил Cursor window could not be created from binder.Не удалось создать окно курсора Android из связующего

Я получаю вопрос о памяти при извлечении контактов из телефонной книги, ниже мой код и я тестирую его в OS 4+

Cursor cursor =managedQuery(ContactsContract.Contacts.CONTENT_URI, 
    new String[]{Data._ID,"display_name","photo_id","starred"}, 
    null, null, "UPPER(" + ContactsContract.Contacts.DISPLAY_NAME + ") ASC , " 
    + ContactsContract.Contacts.HAS_PHONE_NUMBER+ " DESC"); 
Cursor pCur; 
Cursor emailCur; 
while(cursor.moveToNext()) { 
    pCur = WP7Main.this.managedQuery(
     ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
     projPhone, ContactsContract.CommonDataKinds.Phone.CONTACT_ID 
     + " = ?", new String[] { id }, null); 
} 

И я делаю это в AsyncTask, его почти 700 + контакты

Я получаю ниже ошибки

E/CursorWindow(25078): Could not create CursorWindow from Parcel due to error -12. 
W/dalvikvm(25078): threadid=14: thread exiting with uncaught exception (group=0x40c66930) 
E/AndroidRuntime(25078): FATAL EXCEPTION: AsyncTask #3 
E/AndroidRuntime(25078): java.lang.RuntimeException: An error occured while executing doInBackground() 
E/AndroidRuntime(25078): at android.os.AsyncTask$3.done(AsyncTask.java:299)* 

Как я могу решить эту проблему?

+0

Вы пытались закрыть pCur? Кажется, он должен быть закрыт в конце каждой итерации. – sandrstar

+0

@ sandrstar: Я все пробовал, что показано на ссылках http://stackoverflow.com/questions/14316082/cursor-window-could-not-be-created-from-binder – Android

ответ

0

managedQuery устарел с API 11, вы должны использовать CursorLoader. Я предполагаю, что исключение, которое вы видите, связано с тем, что вы пытаетесь запустить метод managedQuery (который находится в потоке активности) из вашего асинхронного фонового потока. Я согласен с тем, что с таким большим запросом вы хотите сделать это в своей собственной ветке, вам просто нужно использовать другой метод.

Смежные вопросы