【问题标题】:Which event is called when iOS app is swiped from app switcher?从应用切换器中滑动 iOS 应用时会调用哪个事件?
【发布时间】:2015-06-20 20:34:34
【问题描述】:

我想知道当我从应用切换器中滑出正在运行的应用时,会调用 AppDelegate 中的哪个事件?我的目标 iOS >= 7.0(即支持多任务)。

也许我只是不了解多任务模式本身...当我从应用切换器中滑出我的应用时,该应用将被终止,对吗?还是继续在后台运行?

EDIT-1:我问的原因:在应用程序启动期间,我通过普通套接字连接到我的 Linux 游戏服务器。我想在应用程序终止时断开套接字。

EDIT-2:我不确定我是否使用后台执行。我在一个运行循环对象中注册了我的网络套接字,以异步接收来自服务器套接字的输入。此外,我安装了一种网络服务,它会定期测试网络连接。该服务正在使用 SCNetworkReachabilityScheduleWithRunLoop。

【问题讨论】:

    标签: ios events event-handling appdelegate terminate


    【解决方案1】:

    在某些情况下applicationWillTerminate: 会被调用,有时不会。

    更多内容可以通过Apple documentation here阅读

    摘录:

    适用于不支持后台执行或链接的应用 针对 iOS 3.x 或更早版本,该方法总是在用户调用时调用 退出应用程序。对于支持后台执行的应用,此方法 一般不会在用户退出应用时调用,因为应用 在这种情况下,只需移动到后台。但是,这种方法可能 在应用程序在后台运行的情况下调用 (未暂停)并且系统出于某种原因需要终止它。

    值得注意的是,

    调用此方法后,应用还会发布一个 UIApplicationWillTerminateNotification 通知给感兴趣 对象有机会响应过渡。

    【讨论】:

    • 我插入了一个断点和一条日志消息,但在多任务处理(即 iOS >= 4.0)环境中从未调用此方法...该应用程序似乎在从滑动关闭后继续在后台运行应用切换器...
    • 您是否在应用中使用后台执行?在这种情况下,它只会移动到前面提到的背景。更准确地说,可以在这里分享你想要实现的目标吗?可能有其他解决方案。
    • 我已经编辑了原始问题以回答您的问题...顺便说一句。感谢您的帮助!
    • 据我所知,您似乎没有使用后台执行。有关后台执行的更多详细信息,您可以查看developer.apple.com/library/ios/documentation/iPhone/Conceptual/… 当您的应用程序进入后台状态时断开套接字并在它变为活动状态时重新连接是否有意义?同时,您可以使用 iOS 中的后台执行来执行有限长度的后台任务以获取任何更新。
    • 谢谢 - 是的,我会重新考虑您建议的方法。
    【解决方案2】:

    它是 - (void)applicationWillTerminate:(UIApplication *)application

    【讨论】:

    • 不,在多任务 iOS 环境中不会调用此方法,即使我将应用程序从应用程序切换器中滑出也是如此。它似乎在后台继续运行。
    • @salocinx 我已经为 ios 9 Beta 测试过它,这就是所谓的
    • 好吧,看来我正在使用后台执行来阻止该方法被调用...在您编辑任何内容之前,我无法支持您的问题。对不起……
    猜你喜欢
    • 2020-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多