私はアプリを作成しています。このアプリは、毎回ユーザーの位置を追跡し続ける必要があります。バックグラウンドモードでも動作します。問題は、他のアプリを数回使用する場合です。他のアプリは大量のメモリを引き起こす可能性があります。私のアプリは時々システムによって終了されます。クラッシュログはありません。だから私はいくつかの理由を知りたいです。アプリが終了しないようにする方法はありますか?あなたの助けに非常に感謝します。
2 に答える
アプリが終了するのを防ぐことはできませんが、アプリを存続させるために最善を尽くすことができるのは、バックグラウンドで可能な限り多くのメモリを解放することです-キャッシュされた画像、ファイル...また、実行中のタイマー、UIの更新を停止しますそしてすべての時間がかかります。MVCルールに従うことにより、最適な実装は、場所の更新のみを担当する別個のクラス(モデル)を作成することです(CLLocationManager
内部で、クラスはその委任メソッドを実装します)。したがって、バックグラウンドで実行する必要があるのは、によって受信されたロケーションポイントを収集することCLLocationManager
だけです。また、あなたにメソッドを実装-applicationWillTerminate
しますAppDelegate
。このメソッドは、アプリがバックグラウンドで終了し(OSまたはユーザーのいずれかによって)終了し、内部でCoreDataのロケーションポイントを永続化する場合にのみ呼び出されます。これまでのところ、私のアプリは殺されることなく24時間(もちろん充電あり)存続しています。
バックグラウンドで実行されているアプリは、メモリ使用量やバッテリー寿命などによって異なります。バックグラウンドで実行されているアプリが多い場合、アプリが終了する可能性があります。アプリをバックグラウンドで永続的に実行できるとは思いません。