我想在应用程序每次启动时运行一小段代码。我尝试了以下方法:
- 在 Activity.onCreate() 中。但这不起作用,因为例如可以在轮换时重新创建活动。
- 创建 Application 的子类并在那里运行 onCreate() 。这似乎也不起作用。它会在安装应用程序时执行,但不会在您退出应用程序并再次进入时执行。
有任何想法吗?
我想在应用程序每次启动时运行一小段代码。我尝试了以下方法:
有任何想法吗?
在您的主要活动中,声明您true
在运行启动代码时设置的静态布尔标志。在onCreate
中,仅当标志为 时才运行启动代码false
。在onDestroy
(或在任何关闭生命周期方法中,就此而言),如果活动正在完成,则清除标志:
protected void onDestroy() {
super.onDestroy();
if (isFinishing()) {
startedFlag = false;
}
}
这将在活动完成时清除标志,但如果活动因配置更改而被销毁,则保持不变。
仍然有一个问题:活动的进程可能会在暂停时被终止,并且应用程序处于后台。false
在这种情况下,当用户尝试将应用程序带回前台时,系统重新创建 Activity 时会出现该标志。如果这是一个问题,那么您将不得不使标志持久化。我建议为此使用共享首选项。
- 创建 Application 的子类并在那里运行 onCreate() 。这似乎也不起作用。它会在安装应用程序时执行,但不会在您退出应用程序并再次进入时执行
您需要将代码放在构造函数中,而不是放在 onCreate() 方法中。检查这个答案:https ://stackoverflow.com/a/13809300/2005891