iOS应用程序生命周期4 / 3GS / iPad与2G / 3G

时间:2011-02-01 11:05:21

标签: ios4 lifecycle

我已经阅读了Apple关于应用程序生命周期的documentation,并进行了一些测试,以确定不同设备上的应用程序生命周期。 (除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!当你以这种方式杀死和app时会发生什么?

appWillTerminate何时调用“多任务”设备?我的结果是否正确?

编辑:

引用苹果公司关于appWillTerminate的文档:

  

对于支持后台执行的应用程序,当用户退出应用程序时通常不会调用此方法,因为在这种情况下应用程序只是移动到后台。但是,可以在应用程序在后台运行(未暂停)并且系统因某种原因需要终止它的情况下调用此方法。

“通常不叫”是什么意思。 “系统需要终止它..”意味着将调用方法appWillTerminate

1 个答案:

答案 0 :(得分:1)

我认为你是对的。当您从任务栏中终止应用程序时(或者当您的设备内存不足并且操作系统为您杀死应用程序时),它只会发送一个SIGKIL信号。如你所知,它从不调用任何回调。

According to the documentation

  

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

因此,iOS 可以调用applicationWillTerminate:方法,但可能不会。 (我从未见过它。)

如果您想在应用被杀之前保存任何状态,则需要在进入后台时进行保存。