Когда вы говорите, что Loaders запускает запросы в фоновых потоках, вы должны понимать, что именно реализации класса Loader выполняют запросы в фоновом потоке.
Следствием этого является то, что вы захотите использовать или расширять и реализовывать подклассы абстрактного класса Loader, а не использовать потоки AsyncTask или Java. Причина в том, что когда вы создаете Loader, он ожидает, что вы вернете экземпляр типа Loader. Для этого нельзя использовать поток Java или AsyncTask.
Подклассы класса Loader делают это, начиная свой собственный поток. Клиентский класс или класс, который создает Loader, только инициализирует Loader. Фактический экземпляр Loader может делать все, что вы хотите. Это может быть что угодно - вставить, обновить, удалить и т. Д. Предоставленная Android реализация CursorLoader асинхронно запрашивает данные из таблиц в фоновом потоке и возвращает набор результатов. Android не предоставляет аналогичные собственные реализации для вставки или обновления данных. То, что у вас есть, это возможность расширения из AsyncTaskLoader (того же класса, от которого наследуется CursorLoader).
Кроме того, имейте в виду, что загрузчики используются для оптимизации доступа к базе данных и, как таковые, будут публиковать результаты в основном потоке только после того, как они выполнят свою задачу, а не до этого (существует способ, подобный обходному пути для публикации обновлений в поток пользовательского интерфейса, но тогда это нарушает парадигму). Погрузчики заинтересованы только в завершении своей работы и не заинтересованы в предоставлении каких-либо обновлений.
Если вы просто хотите обрабатывать запросы ContentProvider асинхронно, вы можете рассмотреть возможность использования класса AsyncQueryHandler, предоставляемого Android.