【问题标题】:How can I simulate app being killed in background?如何模拟应用程序在后台被杀死?
【发布时间】:2013-02-04 20:05:27
【问题描述】:

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

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

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

【问题讨论】:

    标签: ios ios-simulator


    【解决方案1】:

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

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

    【讨论】:

    • 只是一个简单的问题,您是指调试器“暂停”而不是“停止”吗?我找不到“停止”调试器的方法。我真的很想知道,因为我正在调试一个后台位置应用程序并希望在系统终止后重新启动它。
    • @JitendraKulkarni:我的意思是停止。它是 Xcode 工具栏左上角的大按钮,紧挨着 Run(看起来像“Play”)按钮。它只是终止进程,无论它处于何种状态。传统上,当后台 iOS 应用程序被系统杀死时,会发生这种情况。
    【解决方案2】:

    你应该能够:

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

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

    【讨论】:

    • 小修正 - 图标有破折号,而不是 X。删除应用时会出现 X。
    【解决方案3】:

    iOS 14.5 及更高版本

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

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


    iOS 14.4 及更早版本

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

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

    【讨论】:

    • 这是一个非常有用的答案。谢谢!
    • 我已经看到applicationWillTerminate 在最近的 iOS 版本中用户强制退出应用程序时也会调用。
    【解决方案4】:

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

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

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

    【讨论】:

    • 如何在 iPhone X 上做到这一点?
    • 谢谢!到目前为止我发现的最简单的方法。我正在使用 Iphone 7 进行测试。
    猜你喜欢
    • 1970-01-01
    • 2023-04-02
    • 2015-05-15
    • 1970-01-01
    • 2021-03-02
    • 2020-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多