Где закрыть курсор, при использовании адаптера и асинхронной задачи? - PullRequest
1 голос
/ 16 января 2012

Я использую AsyncTask для извлечения некоторой информации из базы данных.Следовательно, в методе doInBackground я пишу следующий код:

dbhandler = new DbHandler(TestActivity.this);
db = dbhandler.getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT sys_id as _id,statuses,user,created_at FROM status ORDER BY sys_id desc", null);
Log.d(TAG, "cursor got count: " + cursor.getCount());
return cursor;

Я использую этот курсор в методе postExecute, который:

adapter = new TimelineAdapter(TestActivity.this, cursor);
listTimeline.setAdapter(adapter);
dbhandler.close();
Log.d(TAG, "Getting here ...");

Теперь проблема заключается в следующем:если я оставлю это как есть, я получу ошибку в logcat, говорящую, что курсор должен быть закрыт.Но когда я пишу cursor.close() в методе postExcecute(), я не могу получить ни одной записи, хотя мой курсор имеет конечное число.

1 Ответ

0 голосов
/ 17 января 2012

Пусть Activity справится с этим, вызвав startManagingCursor().

...