Если вы имеете в виду обычный вариант использования ContentResolver для вызова ContentProvider, то вот что происходит, насколько мне известно:
В этом примере я предполагаю, что ваш ContentProvider живет в одном процессе, а ваша активность - в другом процессе.
Если ContentProvider не был создан, то вызывается метод onCreate () с использованием «основного» потока процесса приложения.
Методы query () / insert () / update () / delete () вызываются с помощью BinderThreads, которые сидят в каждом процессе приложения в ожидании входящих команд от других процессов.
Так что же произойдет, если действие, вызвавшее запрос () / insert () / etc, будет прервано во время одного из этих вызовов метода? Я не могу сказать наверняка, но я довольно уверен, что все, что происходит в ContentProvider, будет продолжаться, потому что процесс ContentProvider должен продолжаться незатронутым, но что произойдет после того, как этот метод вернется, я не могу сказать наверняка.
Я не уверен, как медленная сеть вообще будет вовлечена в это, если ваш провайдер контента не будет поддерживаться сетью вместо обычной sqlite db?
Пояснение:
Существует две возможности при вызове функции ContentProvider (запрос / вставка / обновление / удаление / и т. Д.):
Ваш ContentProvider находится в том же процессе, что и вызывающая сторона. В этом случае функция ContentProvider выполняется синхронно в том же потоке, что и вызывающая сторона.
Ваш ContentProvider находится в процессе, отличном от вызывающего. В этом случае функция ContentProvider выполняется в потоке подшивки в процессе ContentProvider.
В обоих случаях вызывающая сторона блокируется до тех пор, пока не будет возвращена функция ContentProvider. Как всегда, прочитайте полную документацию от Google и / или исходный код AOSP.
http://developer.android.com/reference/android/content/ContentProvider.html
http://developer.android.com/guide/topics/providers/content-provider-basics.html
http://developer.android.com/guide/components/processes-and-threads.html