Когда вы вызываете query()
или rawQuery()
на SQLiteDatabase
, Cursor
возвращается немедленно, поскольку сам фактический запрос задерживается до тех пор, пока вы не начнете использовать данные.Любой вызов, который манипулирует Cursor
или нуждается в данных, которые подразумевают, что запрос выполнен (например, getCount()
), фактически выполнит запрос.Следовательно, лучше всего «прикасаться» к Cursor
в doInBackground()
, пока вы находитесь в фоновом потоке.
Впрочем, с этого момента весь набор результатов находится в памяти, для наборов результатов в1Мб.