启动时运行代码ONCE

时间:2012-10-19 14:08:32

标签: android

我希望每次应用启动时都会运行一小段代码。我尝试过以下方法:

  • 在Activity.onCreate()中。但是这不起作用,因为活动可以在旋转时重新创建。例如。
  • 创建Application的子类并在那里运行onCreate()。这似乎也不起作用。它会在安装应用程序时执行,但不会在您退出应用程序并再次进入应用程序时执行。

有什么想法吗?

2 个答案:

答案 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