web-dev-qa-db-ja.com

バックグラウンドで強制終了されるアプリをどのようにシミュレートできますか?

アプリ(App1)が別のアプリ(App2)を起動した後にシステムによってシャットダウンされたときに、アプリ(App1)が正しく動作することを確認しようとしています。この動作をシミュレートまたは強制する方法はありますか?

App2の実行中にメモリ警告をシミュレートするようシミュレーターに指示しても、App1がフォアグラウンドに戻るまでは何も起こりません。デバッガーからApp1を強制終了すると、同じ一連のアプリイベントがシミュレートされますか?

編集:ファイルを処理する2番目のアプリを起動すると、アプリがバックグラウンドで配置されます。次に、この2番目のアプリがアプリを再起動します。2番目のアプリの実行中にシステムがシャットダウンしたときに、アプリが正しく動作することを確認しようとしています。

36
Greg

はい、アプリがすでにバックグラウンドにある場合。バックグラウンドでアプリがバックグラウンドで終了した場合、警告なしでアプリが終了します。アプリデリゲートメソッドが呼び出されず、状態が変更されません。これは、アプリがバックグラウンドで実行されているときにデバッガーを停止した場合とまったく同じです。 (これは、シミュレータのホームボタンまたはCmd-Shift-Hをクリックして、すでにアプリをバックグラウンドに置いていることを前提としています)

(@Inafzigerによると、シミュレーターのインターフェイスを使用して実行中のアプリを強制終了することにより、同じ効果を得ることができます。)

11
Ben Zotto

他の回答にあるように、アプリを強制終了するか、デバッガーを停止することで、アプリをすぐに終了できます。これらの場合、アプリは警告を受け取りません。

applicationWillTerminateメソッドをテストする場合は、.plistでUIApplicationExitsOnSuspendYESに設定してから、アプリを切り替えるか、ホームボタンを押します。キーには、文字列「YES」ではなくブール値を設定してください。

23
Aaron Brager

私はこれが2年前のものであることを知っていますが、誰か他の人が今これを検討している場合は共有したいと思います。次の手順を試してください。

  1. デバイスでアプリを実行する
  2. ホームボタンを1回押して、ホーム画面に移動します
  3. 電源オフスライダーが表示されるまで、電源ボタンを5秒間押し続けます。
  4. ホームボタンを5秒間押し続けます

Xcodeからアプリを実行している場合は、Message from debugger: Terminated due to signal 9

10
drewg23

次のことができるはずです。

  • ホームボタンをタップして、ホーム画面に移動します
  • ホームボタンを2回タップします(シミュレーターのキーボードショートカットを使用します)
  • 揺れ始めるまで下部のアイコンを押し続けます
  • ダッシュサークル-メモリから削除します

これにより、バックグラウンドに移行するためのアプリデリゲートメソッドが提供されます。これは、iOS 6以下での動作方法です。

7
lnafziger