¿La lectura de un Cursor de Android va todo el camino a la base de datos?

Tengo una especie de pesada aplicación de Android y quiero asegurarse de que nunca ANR.

He movido mis consultas de la base de datos lejos del hilo de UI (a AsyncTasks), pero todavía leo del cursor en el hilo del ui puesto que supongo que el cursor vuelto se almacena en alguna parte en memoria, es decir la lectura real de él no va el todo el camino a la base de datos. ¿Es correcto o debo realmente mover todas las lecturas del cursor a los subprocesos no UI también?

Para ser más especifico:

Hace por ejemplo http://developer.android.com/reference/android/database/Cursor.html#getInt(int ) leyó de memeory, o hace aquire una cierta clase de bloqueo de la lectura de la base de datos real de SQLite.

Supongo que la implementación Cursor en mi caso es un SQLiteCursor ya que el ContentProvider se implementa utilizando una base de datos SQLite.

Cuando llama a query() oa rawQuery() en un SQLiteDatabase , un Cursor se devuelve inmediatamente, porque la propia consulta real se retrasa hasta que empiece a utilizar datos. Cualquier llamada que manipule el Cursor o necesite datos que impliquen que la consulta se ejecute (por ejemplo, getCount() ) ejecutará la consulta. Por lo tanto, es mejor "tocar" el Cursor en doInBackground() mientras está en el hilo de fondo.

A partir de ese momento, sin embargo, todo el conjunto de resultados está en la memoria, para los conjuntos de resultados en 1 MB.

  • Android Eclipse DDMS - No se puede extraer el archivo del dispositivo enraizado
  • Android adb, recuperar base de datos utilizando run-as
  • ¿Es este CursorAdapter personalizado para un ListView correctamente codificado para Android?
  • SQLite de Android: reemplaza la base de datos antigua por una nueva o usa scripts de migración
  • Mejor base de datos para el desarrollo de teléfonos móviles
  • Cómo establecer la contraseña como píxeles de la imagen en android (punto de clic cued o contraseña grapical)
  • Examinar la base de datos SQLite de mi aplicación para Android?
  • Android, cómo ejecutar un archivo sql en sqlitedatabase
  • ¿Cómo portar un MS Access existente a SQLite para su uso con el desarrollo de aplicaciones para Android?
  • Usando COLLATE en Android SQLite - Locales se ignora en la instrucción LIKE
  • ¿Qué tipos de bases de datos están disponibles en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.