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