Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当iPhone关闭时,仅调用applicationWillResignActive?_Iphone_Ios4_Multitasking - Fatal编程技术网

当iPhone关闭时,仅调用applicationWillResignActive?

当iPhone关闭时,仅调用applicationWillResignActive?,iphone,ios4,multitasking,Iphone,Ios4,Multitasking,各位专家 我已经测试了当iPhone处于活动状态时关闭时,我的应用程序会发生什么情况。为此,我在xcode调试器控制台中记录了应用程序生命周期的回调方法 结果是:当我按下设备的开/关按钮一段时间后,会调用applicationWillResignActive。iPhone在屏幕上显示了关闭设备的选项。如果我确认Knowlege关机,iPhone就会关机。但是显然没有调用进一步的回调方法,如applicationidenterbackground或applicationWillTerminate。

各位专家

我已经测试了当iPhone处于活动状态时关闭时,我的应用程序会发生什么情况。为此,我在xcode调试器控制台中记录了应用程序生命周期的回调方法

结果是:当我按下设备的开/关按钮一段时间后,会调用
applicationWillResignActive
。iPhone在屏幕上显示了关闭设备的选项。如果我确认Knowlege关机,iPhone就会关机。但是显然没有调用进一步的回调方法,如
applicationidenterbackground
applicationWillTerminate
。因此,如果我不将数据保存在
应用程序willresignactive
中,所有数据都将丢失。尽管如此,用户还是应该将应用程序的数据保存在
applicationidenterbackground
中,并且
applicationWillTerminate

您认为,这两个方法中有一个仍然被调用,只是不再打印在控制台中了吗


我想你的测试可能是正确的。该应用程序已不再处于活动状态,但尚未进入后台--有点像我打电话进来时--因此我认为这些通知是有意义的


你该怎么办?我的建议毫无意义。在我看来,这件事很少发生,不值得担心。如果您想使用安全带和支架,那么在“applicationWillResignActive”中保存状态应该可以工作,只要没有太多可存储的内容

我做了一些进一步的测试:

我已将所调用的生命周期方法保存在数据库中,并在may应用程序运行时关闭了iPhone实际上只调用了
应用程序willresignactive
但在关闭后,我的应用程序处于“未运行”状态,因为启动它会启动调用
应用程序:didfinshihlaunchingwithoptions:
applicationdidebomeactive
。因此,如果我不将应用程序数据保存在
applicationWillResignActive
中,应用程序数据就会丢失


如果在应用程序运行时电池是空的
应用程序标识符背景
应用程序将终止
,则调用(没有调用
应用程序将重新激活
!。

我对此进行了测试。这是调用方法的顺序

  • applicationWillResignActive-当用户长时间按住设备上的锁定按钮时(出现一个滑块,要求用户“滑动以关闭电源”)
  • 如果您滑动,设备将按以下顺序调用应用程序中的以下两种方法

  • 应用程序标识符背景

  • 应用程序将终止

  • 设备将关闭

    我假设电池耗尽时也会发生同样的情况

    这是在运行iOS 5.0的3Gs上测试的


    希望这能有所帮助。

    有趣的观察结果。似乎有可能控制台调用它时,它已断开连接,但我打赌它从未被调用。我的直觉是,iOS应用程序的处理方式与OSX的突然终止类似,因此进程会在没有通知的情况下终止。但我再次打赌,用户很少关闭他们的设备(如果他们知道怎么做)。但如果电池没电,设备也会关机。如果是临时电池,很难测试应用程序的行为。因为如果你将iPhone连接到开发pc,在控制台中记录回调方法,它就会充电!但我猜该应用程序的行为类似于手动关闭机箱。我在运行iOS 5.0的3GS上进行了测试…如果确认关闭后,将调用ApplicationIdentinterBackground和applicationWillTerminate!设备在关闭前会记录到控制台。