应用程序进入后台后应用程序会重新启动吗

Will application Relaunch after app goes background

如果我通过单击主页按钮将我的应用程序发送到后台并等待特定时间(可能是 1 或 2 小时)。

如果我现在点击应用程序图标会发生什么?

应用程序会重新启动还是只是从后台转到前台

快"prologue":

欢迎来到 stack overflow (SO) 的奇妙世界,我自己在这里还是个新手,但发现使用 welcome you 更友好!

以防万一你还没有:在你提问之前,请在 SO 上四处看看,以防其他人问过同样的问题,但如果你不能从中得到你的问题的答案,那么你当然应该问你自己的问题。

答案:

这个问题没有确定的答案,因为它取决于。正如您所说,当您点击主页按钮时,您的应用会进入背景,并且仍然 运行 一定程度。然而,这样做之后,应用程序的生命周期取决于 iOS(设备操作系统)来确定。 iOS 控制和检查设备的内存和 CPU 使用情况(等),如果您在应用程序处于后台时启动另一个 activity,这会产生可用内存和 CPU 等设备不够,iOS 将终止后台的任何应用程序,以免浪费这些资源(或电池等)。如果是这样,您的应用将在您下次点击它时重新启动。

虽然如果您不做任何性能繁重的事情,iOS 更有可能让您的设备 运行 处于后台。

我不确定 iOS 的确切条件,但我会说你的应用很可能会被终止并在 1 或 2 小时后重新启动 "in the background".如果设备在此期间被锁定,则附加条件适用。

为了获得正确的文档,我建议阅读苹果开发者网站上的 Apples documentation for handling App State Transitions and/or the api for UIApplicationDelegate。您可以在哪里查看 AppDelegate 中不同方法的作用以及它们如何交互。

编辑(回复评论):

  1. 每次进入后台时重新启动应用程序的方法?

    • 嗯,有,也没有。我对此不是 100% 确定(之前从未遇到过 "wish"),但你可以在你的 AppDelegate 中这样做:(它基本上会使你的应用程序崩溃,但要注意苹果不鼓励你让你自己的应用程序崩溃任何地方的应用程序)。这样做可能会阻止该应用程序通过苹果商店审核流程(即您的应用程序可能不会被 App Store 接受)。

      func applicationDidEnterBackground(_ application: UIApplication) {
           exit(0)
      }
      
    • 查看这些 post 的答案以获取更多信息:call exit(0) in iphone app , objc - Proper way to exit iPhone application?.

    • 就我个人而言,我建议您解决这个问题,不要这样做。 另外 请记住,当您的应用进入后台时 applicationWillResignActive 将被调用,当用户再次打开它时,将调用 applicationDidBecomeActive 以便您可以重新加载或如果您想刷新任何数据,可以从那里获取一些东西。

每当我们按下设备中的主页按钮时,应用程序都会释放当前正在使用的内存并移至后台。然而,当我们再次按下这个应用程序的应用程序图标时,它会将应用程序带到 iPhone 屏幕的顶部并再次占用内存。这绝对不是重新启动,因为重新启动取决于 UIApplicationDelegate 方法 didFinishLaunchingWithOptions。当我们将应用程序从后台切换到前台时,applicationWillEnterForeground 方法会触发。

为了更好地理解,以下link可能会有用

iOS Application Life Cycle