Уничтожение/жизненный цикл ContentProvider

Мне любопытно, сможет ли кто-нибудь объяснить жизненный цикл ContentProvider. Меня особенно интересует, когда, когда и при каких обстоятельствах поставщик уничтожается. Это не похоже на документацию.

В разделе ContentProvider этой статьи говорится о сложной работе с документацией, но в нем есть ссылка на дискуссию в группах Google, где инженер Google оставил быстрый ответ, заявив, что "поставщики контента никогда не уничтожаются, они существуют на протяжении всего их процесса".

Хорошо, возможно, ContentProvider живет до тех пор, пока его процесс, но как долго его процесс продолжается? Предположим, у меня есть приложение, которое предоставляет ContentProvider, и запрос из другого приложения является единственной причиной, по которой был создан мой процесс ContentProvider (т.е. Не работает также работа или служба). Будет ли этот процесс продолжать работать бесконечно? Когда Android работает на ресурсах, он уничтожает такие компоненты, как Services. Являются ли ContentProviders не кандидатами на уничтожение, когда ресурсы жесткие?

Ответ 1

Мне особенно интересно, если, когда и при каких обстоятельствах уничтожается поставщик

Он создается при запуске вашего процесса (даже до создания объекта Application), и он живет до тех пор, пока процесс не будет завершен.

как долго его процесс живет?

Это зависит от того, что происходит с приложением, пользователем и устройством.

Будет ли этот процесс работать бесконечно?

Нет.

Когда система работает на ресурсах, Android уничтожает такие компоненты, как Сервисы.

Нет, это не так. Когда система работает в режиме ОЗУ, Android завершает процессы.

Являются ли ContentProviders не кандидатами на уничтожение, когда ресурсы ограничены?

Процесс, содержащий ContentProvider, может быть прерван из-за низких условий памяти, старости, действия пользователя и т.д.

Ответ 2

Поставщики контента не имеют определенного жизненного цикла, вы не можете много сделать контролировать его. Структура управляет созданием и уничтожением поставщика контента (процесса).

Когда внешние клиенты или компоненты вне процесса обращаются к Поставщику контента, этот запрос обрабатывается в потоке из пула потоков процесса, в котором находится поставщик. И когда запросов больше нет, процесс может быть если в этом процессе больше нет активных компонентов (активности, обслуживания). Но это решение принимает Android.