40

我正在尝试验证我的应用程序(App1)在启动另一个应用程序(App2)后被系统关闭时是否正常运行。有没有办法模拟或强制这种行为?

在 App2 运行时告诉模拟器模拟内存警告不会做任何事情,直到 App1 回到前台。从调试器中杀死 App1 会模拟相同的应用程序事件序列吗?

编辑:我的应用程序在启动第二个应用程序来处理文件时被置于后台。然后第二个应用程序重新启动我的应用程序,我正在尝试验证我的应用程序在第二个应用程序执行时系统关闭它时是否正常运行。

4

4 回答 4

32

iOS 14.5 及更高版本

在设备上启用设置-开发人员-快速应用终止

设置 - 开发者 - 快速应用终止截图

当您的应用程序处于后台时,这将终止而不是暂停您的应用程序。这主要用于测试状态恢复逻辑。


iOS 14.4 及更早版本

正如其他答案所指出的,您可以通过强制退出或停止调试器来立即结束您的应用程序。在这些情况下,您的应用不会收到任何警告。

如果您想测试您的applicationWillTerminate方法,请在 .plist 中设置UIApplicationExitsOnSuspendYES,然后切换应用程序或按主页按钮。确保将密钥设置为布尔值,而不是字符串“YES”。

于 2013-02-19T23:22:34.253 回答
13

是的,如果您的应用程序已经在后台。在后台被系统杀死的应用程序在没有警告的情况下终止——没有调用应用程序委托方法,也没有进行状态更改——这正是在应用程序处于后台时执行调试器停止时发生的情况。(这假设您已经通过单击模拟器上的主页按钮或 Cmd-Shift-H 将应用程序置于后台)

(正如@Inafziger 所说,您也可以通过使用模拟器的界面强制退出正在运行的应用程序来获得相同的效果。)

于 2013-02-19T23:16:41.880 回答
13

我知道这是几年前的事了,但如果现在有人正在研究这个,我想分享一下。尝试以下步骤:

  1. 在设备上运行应用程序
  2. 按一次主页按钮进入主屏幕
  3. 按住电源按钮 5 秒钟,直到看到电源关闭滑块
  4. 按住主页按钮 5 秒钟

如果您从 Xcode 运行应用程序,您应该会看到Message from debugger: Terminated due to signal 9

于 2018-04-30T14:35:52.493 回答
7

你应该能够:

  • 点击主页按钮,带您进入主屏幕
  • 点击主页按钮两次(使用模拟器中的键盘快捷键)
  • 触摸并按住底部的图标,直到它开始摆动
  • 点击破折号圈-将其从内存中删除

这为您提供了进入后台的应用程序委托方法等。这就是它在 iOS 6 及更低版本中的工作方式。

于 2013-02-19T23:17:16.687 回答