バックグラウンドで申請が殺されたときにクリーンアップを実行する方法は?
-
09-10-2019 - |
質問
私のアプリケーションは、ライフサイクル全体で必要な一時的なファイルを作成します。最終的にこれらのファイルを処分する必要があるため、デバイス上のスペースを占有しません。アプリケーションが終了したときにそれらを削除できると考えましたが、マルチタスクが導入されているため、ライフサイクルは以前ほど簡単ではありません。私の主な質問は次のとおりです。アプリケーションが背景に移動して後で殺されると、それは受信しますか applicationWillTerminate:
?それとも、メモリから拭いただけですか?
アプリケーションがバックグラウンドに移動したときにクリーンアップを行うことはできません。これは、操作の途中で背景になっており、前面に戻ったら一時ファイルが必要になるためです。スタートアップ時にファイルをクリーニングできると思いますが、興味があります applicationWillTerminate:
とにかく行動。
解決
いいえ、 applicationWillTerminate:
Multi-Taskingが有効になっているiOS 4デバイスでは呼び出されません。アプリが終了すると、通常、デバイスがメモリが不足していることを意味します。 やりました とにかくタスクを完了するのに十分なメモリが利用できるとは言えません。
Appleは、アプリがバックグラウンドに入ったときにクリーンアップすることをお勧めします。数秒が必要な場合は、これを行うために余分な時間を要求できます(これは、すべてのアプリケーションに開かれている数少ないマルチタスクシナリオの1つです)。
他のオプションは、タスクが終了したとき(いつでも)またはアプリケーションが開始されたときに整理することです。他の順列があるかもしれないと思います...
他のヒント
インターネットによれば、アプリケーションウィルリタネート:アプリケーションがバックグラウンドで殺されている間は呼び出されません。もう1つの方法は、いくつかの情報を保存することです(nsuserdefaultsなど)、開いた一時ファイル、起動後、それらのファイルが残っているかどうかを確認して削除します。また、iOSがアプリケーションを殺す方法を知ることができます(これは信号を送信することによって行われますが、確かではありません)。アプリに信号ハンドラーを追加します。