アプリ(App1)が別のアプリ(App2)を起動した後にシステムによってシャットダウンされたときに、アプリ(App1)が正しく動作することを確認しようとしています。この動作をシミュレートまたは強制する方法はありますか?
App2の実行中にメモリ警告をシミュレートするようシミュレーターに指示しても、App1がフォアグラウンドに戻るまでは何も起こりません。デバッガーからApp1を強制終了すると、同じ一連のアプリイベントがシミュレートされますか?
編集:ファイルを処理する2番目のアプリを起動すると、アプリがバックグラウンドで配置されます。次に、この2番目のアプリがアプリを再起動します。2番目のアプリの実行中にシステムがシャットダウンしたときに、アプリが正しく動作することを確認しようとしています。
はい、アプリがすでにバックグラウンドにある場合。バックグラウンドでアプリがバックグラウンドで終了した場合、警告なしでアプリが終了します。アプリデリゲートメソッドが呼び出されず、状態が変更されません。これは、アプリがバックグラウンドで実行されているときにデバッガーを停止した場合とまったく同じです。 (これは、シミュレータのホームボタンまたはCmd-Shift-Hをクリックして、すでにアプリをバックグラウンドに置いていることを前提としています)
(@Inafzigerによると、シミュレーターのインターフェイスを使用して実行中のアプリを強制終了することにより、同じ効果を得ることができます。)
他の回答にあるように、アプリを強制終了するか、デバッガーを停止することで、アプリをすぐに終了できます。これらの場合、アプリは警告を受け取りません。
applicationWillTerminate
メソッドをテストする場合は、.plistでUIApplicationExitsOnSuspend
をYES
に設定してから、アプリを切り替えるか、ホームボタンを押します。キーには、文字列「YES」ではなくブール値を設定してください。
私はこれが2年前のものであることを知っていますが、誰か他の人が今これを検討している場合は共有したいと思います。次の手順を試してください。
Xcodeからアプリを実行している場合は、Message from debugger: Terminated due to signal 9
次のことができるはずです。
-
メモリから削除しますこれにより、バックグラウンドに移行するためのアプリデリゲートメソッドが提供されます。これは、iOS 6以下での動作方法です。