2013-02-19 70 views
27

我试图验证我的应用程序(App1)在它启动另一个应用程序(App2)后被系统关闭时的行为是否正确。有什么办法来模拟或强制这种行为?如何模拟在后台死亡的应用程序?

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

编辑:我的应用程序放置在后台,当它启动第二个应用程序来处理文件。这第二个应用程序然后重新启动我的应用程序,并且我试图验证当第二个应用程序正在执行时系统关闭它时,我的应用程序的行为正确。

回答

9

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

(作为@Inafziger注意到,你也可以通过使用模拟器接口强制退出正在运行的应用程序)

+0

只是一个简单的问题,你的意思是调试器“暂停”而不是“停止”?我找不到“停止”调试器的方法。我真的很想知道,因为我正在调试一个后台定位应用程序,并希望在系统终止后重新启动它。 – 2015-09-04 19:03:53

+0

@JitendraKulkarni:我的意思是停止。这是Xcode工具栏左上角的大按钮,旁边是Run(看起来像是“Play”)按钮。它简单地终止进程,无论它处于什么状态。传统上,当系统被系统杀死时,后台iOS应用程序会发生什么情况。 – 2015-09-04 23:54:28

+0

找到了,谢谢! – 2015-09-06 18:30:38

6

您应该能够:

  • 点击主页按钮,带你到主屏幕
  • 轻按home键两次(使用键盘快捷键在模拟器中)
  • Touch并在底部按住图标,直到它开始摆动
  • 点击冲刺圈-从内存中删除

这给你进入后台等应用程序的委托方法这是怎么回事适用于iOS 6及以下版本。

+1

微调 - 图标有一个破折号,而不是X.删除应用程序时出现X. – rmaddy 2013-02-19 23:44:02

+0

真的......谢谢! – lnafziger 2013-02-20 00:34:26

19

正如另一个答案说明,您可以通过强制退出或通过停止调试器立即结束您的应用程序。在这些情况下,您的应用程序不会收到警告。

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

+0

这是一个非常有用的答案。谢谢! – 2016-04-01 02:34:16

相关问题