为什么与备份相关的过程可能导致应用程序的 onCreate 未执行?命令 1命令 2命令 3命令 4
通常有如下类Application
public class WeNoteApplication extends MultiDexApplication {
public static WeNoteApplication instance() {
return me;
}
@Override
public void onCreate() {
super.onCreate();
me = this;
在正常情况下,'s 将始终在入口点 onCreate 之前被调用。Application
onCreate
Activity
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
我看了一些谷歌的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