2016-10-28 7 views
0

タスクが実行される前にアプリケーションがフォアグラウンドになった場合、バックグラウンドタスクを約5分の遅延で実行できますか?遅延後にiOSでバックグラウンドタスクを実行する

これのコンテキストを説明すると、私が取り組んでいるアプリには、かなり長いセットアップ時間があります。理想的には、バックグラウンドに入るときにはすべてのリソースをクリーンアップし、フォアグラウンドに入るときはゼロから再作成する必要があります。これは部分的にセキュリティのためのものであり、一部はデバイスのエネルギー使用量(ネットワーク、BLE)を削減するものです。

ユーザーが短い時間別のアプリに切り替わり、僕のところに戻ってくると、これは厄介なユーザーエクスペリエンスを作り出します。彼らはすべてが再初期化されるのを数秒待っている。

妥協点として、クリーンアップ手順に遅延を追加したいとします(5分など)。そのため、ユーザーが5分以内に戻ってくると、すべてがそのまま残り、すぐに利用できるようになります。それ以外の場合は、再初期化に少し時間がかかります。どうすれば実装できますか?

+0

バックグラウンドでどのようなタスクを実行したいですか? –

+0

タスクは一部のリソースを解放し、ナビゲーションスタックをリセットします。 – SaltyNuts

答えて

1

iOSでは、ユーザーがアプリを使用している場合、アプリはバックグラウンド処理時間を最大3分にすることができます。したがって、3分のタイマーを使用する場合はUIApplication.sharedApplicationbeginBackgroundTaskWithExpirationHandler:を使用できます。その後、バックグラウンドタスクは、2分、55秒、または3分に近い何かの時間を伴うdispatch_afterを使用して、クリーンアップを行うことができる。ユーザーがアプリに戻ると、時間切れになっていない場合は、フラグを設定するか、またはtimerをリセットしてdispatch_afterが何もしないようにすることができます。

関連する問題