Подтвердить что ты не робот

Почему ContentProvider.onCreate() вызывается перед Application.onCreate()?

Я зарегистрировал ContentProvider в AndroidManifest.xml, и ContentProvider.onCreate() был вызван еще до Application.onCreate(). Я не понимаю этого поведения, на мой взгляд, более естественно, что Application.onCreate() вызывается перед любым из компонентов приложения. Может ли кто-нибудь сказать мне, что время Application.onCreate() и другие компоненты onCreate() вызывается?

4b9b3361

Ответ 1

Согласно проблеме Google, как это должно работать (хотя документация неверна).

Есть еще один вопрос, у которого есть обходной путь, который может вам помочь.

Ответ 2

Когда процесс приложения Android[Multiprocess] запускается впервые, существует четко определенный порядок операций:

  1. Каждый ContentProvider, объявленный в манифесте, создается в android:initOrder

    ContentProvider.onCreate()

  2. Класс приложения (или пользовательский подкласс) создан[Lifecycle]

    Application.onCreate()

  3. Если создан другой компонент, вызванный с помощью какого-либо намерения, он создается.

Подробнее здесь

Ответ 3

Именно так и должно работать.

Документация класса Application была обновлена, начиная с Android 4.2, и там говорится, что Application#onCreate()

Вызывается при запуске приложения до того, как будут созданы какие-либо действия, объекты службы или получателя (за исключением поставщиков контента).