Документация Application#onCreate()
гласит:
Вызывается, когда приложение запускается, до того, как были созданы какие-либо объекты деятельности, службы или получателя (за исключением поставщиков контента).
Это справедливо на практике до тех пор, пока я помню, и многие приложения полагаются на это для инициализации различных материалов. Однако это поведение, по-видимому, изменилось с последним предварительным просмотром Android M (выпущено вчера).
Когда приложение впервые установлено и запущено, пользовательский Application
onCreate()
не будет вызываться. Вместо этого он немедленно запустит первый Activity
.
Это происходит только при первом запуске приложения. Все последующее приложение запускает работу и ведет себя так, как ожидалось, и пользовательский Application
onCreate()
вызывается перед запуском Activity
.
Пример кода
BaseApplication
public class BaseApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Log.d("App", "Test: Application.onCreate()");
}
}
FirstActivity
public class FirstActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("App", "Test: Activity.onCreate()");
}
}
манифест App
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="app.package.name" >
<application android:name=".application.BaseApplication" >
[...]
</application>
</manifest>
Выход Logcat
Снимок экрана ниже показывает вывод Logcat после запуска приложения из чистой установки и затем запускает его снова через 8 секунд.