我读过苹果的文档关于应用程序生命周期并进行了一些测试以了解不同设备上的应用程序生命周期。 (除 2G 外均运行 iOS 4.x)
我已经测试了具有“多任务处理”功能的设备与一些不支持此功能的设备:
iPhone 2G/3G 应用程序生命周期:
(START)
- didFinishLunchingWithOptions
- applicationDidBecomeActive
(HOME PRESSED)
- applicationDidEnterBackground
- appWillTerminate
iPad / iPhone 4 应用程序生命周期:
(START)
- didFinishLunchingWithOptions
- applicationDidBecomeActive
(HOME PRESSED)
- appWillResignActive
- appDidEnterBackGround
(RESART app in the "Taskbar")
- appWillEnterForeGround
- appDidBecomeActive
我试图从“任务栏”杀死该应用程序,但调试器收到了 SIGKILL !当你以这种方式杀死和应用程序时会发生什么?
何时在支持“多任务”的设备上调用 appWillTerminate ?我的结果正确吗?
EDIT:
引用苹果文档中关于 appWillTerminate 的内容:
对于支持后台执行的应用程序,当用户退出应用程序时通常不会调用此方法,因为在这种情况下应用程序只是移动到后台。但是,当应用程序在后台运行(未挂起)并且系统由于某种原因需要终止它的情况下,可能会调用此方法。
他们所说的“通常不被称为”是什么意思? “系统需要终止它..”意味着该方法appWillTerminate
会被调用吗?
我想你是正确的。当您从任务栏终止应用程序时(或者当您的设备内存不足且操作系统为您终止应用程序时),它只会发送 SIGKIL 信号。正如您所注意到的,它从不调用任何回调。
根据文档:
对于支持的应用程序
后台执行,这个方法是
一般不会在用户调用时调用
退出应用程序,因为
应用程序只需移动到
那种情况下的背景。然而,这
方法可能会在某些情况下被调用
应用程序运行的位置
背景(未暂停)和
系统需要终止某些
原因。
So, iOS can打电话给applicationWillTerminate:
方法,但可能不会。 (我从没见过。)
如果您想在应用程序被终止之前保存任何状态,则需要在它进入后台时执行此操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)