【问题标题】:iOS4: application termination event?iOS4:应用程序终止事件?
【发布时间】:2011-04-28 22:25:46
【问题描述】:

我想知道如何检测应用程序何时即将终止。我的意思是真正终止,而不仅仅是进入后台模式。我已经使用了这个事件,它不会触发:

应用程序将终止

我真正想要实现的是当用户点击主页两次并按下应用程序上的红色气球时获得某种事件或通知。我不关心应用程序进入后台模式,有几个事件可以正确处理这个并且它们都可以正常工作。

我需要这个,以便我可以“通知”我的服务器停止向 APNS 发送已终止且未在后台运行的应用程序的推送通知。

如果您知道实现此目的的更简单方法,我会很高兴听到 :)

谢谢

【问题讨论】:

    标签: iphone ios4 notifications push terminate


    【解决方案1】:

    注册您的对象(视图控制器等)以侦听UIApplicationWillTerminateNotification 通知,和/或覆盖应用程序委托的-applicationWillTerminate: 方法并将您的代码放在那里。

    【讨论】:

      【解决方案2】:

      天使,你所要求的无法完成。该应用程序将通过 SIGKILL 终止。不可阻挡,不可捕捉,没有通知。系统启动的终止与用户请求的终止之间没有区别。

      只有当您的应用不支持后台处理时,您才会获得 applicationWillTerminate。

      【讨论】:

        【解决方案3】:

        来自关于此事的 UIApplicationDelegate 文档:

        对于支持 后台执行,这个方法是 用户一般不调用 退出应用程序,因为 应用程序只是移动到 在那种情况下的背景。然而,这 方法可能在某些情况下被调用 应用程序在哪里运行 背景(未暂停)和 系统需要终止它一段时间 原因。

        在我看来,除非您的后台进程正在后台积极地做某事(没有被挂起),否则 applicationWillTerminate 方法将永远不会被调用。

        我想这取决于你对“在后台”的定义是什么。

        【讨论】:

        • 我们在后台活动(运行),并没有得到“applicationWillTerminate”。看我的回答。
        【解决方案4】:

        IIRC 是这样的:

        开始时:

        • didFinishLaunchingWithOptions
        • applicationDidBecomeActive

        按回家:

        • applicationWillResignActive
        • applicationDidEnterBackground

        从主屏幕返回:

        • applicationWillEnterForeground
        • applicationDidBecomeActive

        applicationWillTerminate 在您的应用程序因调用而退出或操作系统因某种原因终止它时被调用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-03-20
          • 2012-01-18
          • 1970-01-01
          • 1970-01-01
          • 2010-10-18
          • 1970-01-01
          • 2015-04-21
          相关资源
          最近更新 更多