为了账号安全,请及时绑定邮箱和手机立即绑定

applicationWillTerminate什么时候调用,什么时候不调用

applicationWillTerminate什么时候调用,什么时候不调用

肥皂起泡泡 2019-10-30 10:35:14
嗨,我已经阅读了关于applicationWillTerminate被调用和未被调用的几个问题。我想总结一下我的理解,因为有几篇文章讲的不同。对于IOS(无多任务),总是在按下主页按钮时调用它。对于IOS 4及更高版本一种。按下主屏幕按钮时不会调用它(因为应用程序移至后台)b。当从多任务扩展坞中关闭应用程序时调用该方法,并且如果该应用程序在info.plist中禁用了突然终止标志,则不会调用它。(我设置了“应用程序应获取App Died事件”,即使在从多任务扩展坞中关闭应用程序时,也没有调用终止函数)基于此,我有几个问题设置应用程序应获取“ App Died”事件标志是一种好习惯吗?(我设置了“应用程序应获取App Died事件”,即使在从多任务扩展坞中关闭应用程序时,也没有调用终止函数)要么与“ info.plist”设置相比,注册“ UIApplicationWillTerminateNotification”更好吗?基本上,我只需要在应用终止时才需要做一些工作,而不必在它移到后台时才需要做。要么编辑(1):应用终止后,以下内容将发送到该应用。我怎么抓到它?程序收到信号:“ SIGKILL”。编辑(2):请注意:从多任务扩展坞中卸下时,它在IOS 4及更高版本中不会被调用。您可能以为是。但就我而言,事实并非如此。我问是否有人知道为什么?还有其他我想念的东西吗?另请注意,我设置了“应用程序应获取应用程序死亡事件”,即使这样它也没有被调用。编辑(3):以下问题的答案也无效。 applicationWillTerminate不被调用有人面临与我类似的问题吗?
查看完整描述

3 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

简而言之,除非您UIApplicationExitsOnSuspend在Info.plist中将其设置为YES ,否则在iOS4及更高版本中,无法保证applicationWillTerminate:会被调用。


如文档所述:


对于支持后台执行的应用程序,当用户退出应用程序时通常不会调用此方法,因为在这种情况下,应用程序只是移至后台。然而,这种方法可以在其中应用程序在背景中(未暂停)运行情况被调用,该系统需要终止它由于某种原因


(强调我的。)


如果您需要在应用退出之前执行某些操作,则需要在中执行操作applicationDidEnterBackground:。无法捕捉SIGKILL。


查看完整回答
反对 回复 2019-10-30
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

据我所知,您的应用程序将在3种情况下死亡。

  1. 在最终用户终止后,您可以在中做某事-[UIApplication applicationWillEnterBackground:],在这种情况下,-[UIApplication applicationWillTerminate:]将不会调用。

  2. 被系统丢弃,例如内存不足,您可以在中做某事-[UIApplication applicationWillTerminate:],在这种情况下,我们不知道是否applicationWillEnterBackground:已被调用;

  3. 崩溃了,只能使用某种崩溃报告工具来完成。(编辑:捕捉SIGKILL是不可能的)


查看完整回答
反对 回复 2019-10-30
  • 3 回答
  • 0 关注
  • 572 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信