Я зарегистрировал ContentProvider в AndroidManifest.xml, и ContentProvider.onCreate() был вызван еще до Application.onCreate(). Я не понимаю этого поведения, на мой взгляд, более естественно, что Application.onCreate() вызывается перед любым из компонентов приложения. Может ли кто-нибудь сказать мне, что время Application.onCreate() и другие компоненты onCreate() вызывается?
Почему ContentProvider.onCreate() вызывается перед Application.onCreate()?
Ответ 1
Согласно проблеме Google, как это должно работать (хотя документация неверна).
Есть еще один вопрос, у которого есть обходной путь, который может вам помочь.
Ответ 2
Когда процесс приложения Android[Multiprocess] запускается впервые, существует четко определенный порядок операций:
Каждый
ContentProvider
, объявленный в манифесте, создается вandroid:initOrder
ContentProvider.onCreate()
Класс приложения (или пользовательский подкласс) создан[Lifecycle]
Application.onCreate()
Если создан другой компонент, вызванный с помощью какого-либо намерения, он создается.
Подробнее здесь
Ответ 3
Именно так и должно работать.
Документация класса Application
была обновлена, начиная с Android 4.2, и там говорится, что Application#onCreate()
Вызывается при запуске приложения до того, как будут созданы какие-либо действия, объекты службы или получателя (за исключением поставщиков контента).