2

我想在应用程序每次启动时运行一小段代码。我尝试了以下方法:

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

有任何想法吗?

4

2 回答 2

4

在您的主要活动中,声明您true在运行启动代码时设置的静态布尔标志。在onCreate中,仅当标志为 时才运行启动代码false。在onDestroy(或在任何关闭生命周期方法中,就此而言),如果活动正在完成,则清除标志:

protected void onDestroy() {
    super.onDestroy();
    if (isFinishing()) {
        startedFlag = false;
    }
}

这将在活动完成时清除标志,但如果活动因配置更改而被销毁,则保持不变。

仍然有一个问题:活动的进程可能会在暂停时被终止,并且应用程序处于后台。false在这种情况下,当用户尝试将应用程序带回前台时,系统重新创建 Activity 时会出现该标志。如果这是一个问题,那么您将不得不使标志持久化。我建议为此使用共享首选项。

于 2012-10-19T14:15:21.670 回答
1

这是我如何在每个应用程序启动时只执行一次的副本?

  • 创建 Application 的子类并在那里运行 onCreate() 。这似乎也不起作用。它会在安装应用程序时执行,但不会在您退出应用程序并再次进入时执行

您需要将代码放在构造函数中,而不是放在 onCreate() 方法中。检查这个答案:https ://stackoverflow.com/a/13809300/2005891

于 2014-07-08T20:28:47.260 回答