¿Es apropiado el acceso a archivos SQL o generales en el hilo principal de la interfaz de usuario de Android?

Estoy tratando de seguir las mejores prácticas de Android, así que en modo de depuración activo todo lo siguiente:

StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectAll().penaltyLog().build()); //detect and log all thread violations
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectAll().penaltyLog().build()); //detect and log all virtual machine violations

Android ahora me grita cuando intento usar cualquier tipo de acceso a archivos o SQL en el hilo principal (UI). Pero veo muchas recomendaciones para usar el acceso a archivos y / o SQL en el hilo principal. Por ejemplo, la actividad principal debe cargar los valores de preferencia predeterminados dentro deonCreate() en caso de que aún no se hayan configurado:

PreferenceManager.setDefaultValues(context, resId, readAgain);

Oops --- eso da como resultado un acceso a los archivos en la primera ejecución de la aplicación, porqueonCreate() se llama en el hilo de la interfaz de usuario. La única forma de evitarlo que puedo ver es comenzar un hilo separado, que introduce una condición de carrera con otro código de interfaz de usuario que podría leer las preferencias y esperar que los valores predeterminados ya estén establecidos.

Think también de servicios como el DownloadManager. (En realidad, es tan defectuoso que es inútil en la vida real, pero supongamos que funciona por un segundo). Si pone en cola una descarga, obtendrá un evento (en el hilo principal) que le indica que la descarga ha finalizado. Para obtener realmente información sobre esa descarga (solo le da una ID de descarga), debe consultar el DownloadManager --- que involucra un cursor, que le da un error si tiene activada una política estricta.

Entonces, ¿cuál es la historia? ¿Está bien acceder a los cursores en el hilo principal? ¿O es algo malo, y la mitad del equipo de desarrollo de Android y los autores de libros de Android se olvidaron de eso?

Respuestas a la pregunta(2)

Su respuesta a la pregunta