每次应用程序启动时,我都要运行一小段代码。我试过以下方法:
在activity.oncreate()中。但这不起作用,因为活动可以在循环中重新创建。
创建应用程序的子类并在其中的oncreate()中运行。这似乎也不管用。它在安装应用程序时执行,但在退出应用程序并再次进入应用程序时不会执行。
有什么想法吗?
最佳答案
在主活动中,声明在运行启动代码时设置为true
的静态布尔标志。在onCreate
中,仅当标志为false
时才运行启动代码。在onDestroy
中(或在任何关闭生命周期方法中,就此而言),如果活动正在完成,则清除标志:
protected void onDestroy() {
super.onDestroy();
if (isFinishing()) {
startedFlag = false;
}
}
这将在活动结束时清除标志,但如果活动因配置更改而被销毁,则保持标志不变。
仍然有一个问题:活动的进程可能在暂停时被终止,而应用程序在后台。在这种情况下,当用户试图将应用程序带回前台时,系统重新创建活动时,标志将
false
。如果这是一个问题,那么您必须使标志持久化。我建议对此使用共享的首选项。