При повторном запуске приложения onCreate класса приложения не вызывается. Первый раз вокруг это. Это можно воспроизвести, используя Android Studio для создания нового приложения, а затем добавив минимальный одноэлементный класс приложения:
package com.whatever.test;
import android.app.Application;
import android.content.Context;
import android.util.Log;
public class MyApp extends Application {
private static MyApp singleton;
public static MyApp getInstance(Context context) {
Log.i("MyApp","---------->getinstance");
return singleton;
}
@Override
public void onCreate()
{
super.onCreate();
singleton = this;
Log.i("MyApp","---------->act oncreate");
}
}
и при добавлении активности в onCreate:
MyApp myApp = MyApp.getInstance(this);
Log.i("MainActivity", "-------->onCreate");
и в onDestroy:
@Override
public void onDestroy()
{
super.onDestroy();
Log.i("MainActivity", "-->onDestroy");
}
Manifest.xml содержит:
android:name=".MyApp"
Я нажимаю кнопку «Назад» в действии и вижу, что onDestroy вызывается, но этого явно недостаточно, чтобы удалить класс Application. Если я убью приложение с помощью диспетчера приложений телефона и повторно запущу, я снова увижу журнал App onCreate (но только для одного запуска).
Разве этот класс не должен быть уничтожен при удалении последнего действия? Это мое предположение. Конечно, я читал людей, говорящих, что этот класс может быть уничтожен во время работы приложения, поэтому вам приходится обрабатывать перезагрузку любого состояния в течение жизненного цикла приложения, но ничего не отражает мой сценарий.
Примечание. Проверено на физическом телефоне (Galaxy S3).