通常情况下,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
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