Как правило, класс Application
следующий
public class WeNoteApplication extends MultiDexApplication {
public static WeNoteApplication instance() {
return me;
}
@Override
public void onCreate() {
super.onCreate();
me = this;
В обычных условиях Application
onCreate
всегда вызывается перед точкой входа Activity
onCreate.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Normally, it will NOT be null.
android.util.Log.i("CHEOK", "WeNoteApplication -> " + WeNoteApplication.instance());
Однако, если я запускаю следующую команду во время запуска приложения
c:\yocto>adb shell bmgr restore com.yocto.wenote
restoreStarting: 1 packages
onUpdate: 0 = com.yocto.wenote
restoreFinished: 0
done
Приложение будет закрыто. Если я коснусь значка приложения, чтобы запустить снова. Это то, что происходит
Application
onCreate
не выполняется!Activity
onCreate
выполняется, аWeNoteApplication.instance()
являетсяnull
Я смотрю на исходный код Google Android (например, WorkManager
)
https://github.com/googlecodelabs/android-workmanager/issues/80
В своем комментарии они утверждают, что
// 1. The app is performing an auto-backup. Prior to O, JobScheduler could erroneously
// try to send commands to JobService in this state (b/32180780). Since neither
// Application#onCreate nor ContentProviders have run,...
Похоже, что если связан процесс резервного копирования, Application
onCreate
не будет выполнен!
Почему так? Задокументировано ли когда-нибудь это поведение?
Отслеживание проблем
https://issuetracker.google.com/issues/138423608