0

私は CoreData を使用していますが、不要な (または期限切れの) データをいつ削除する必要があるかを考えています。

私が想像できるポイントは次のとおりです。

  1. アプリ起動時。
  2. アプリが終了したとき。(アプリデリゲートのapplicationWillTerminate:)

1つはリスクがないと思いますが、パージ中にユーザーを待たせたくありません。(ウォッチドッグ例外は知っています。パージ時間が20秒を超える場合は、View Controllerを待機用に準備します。)

2人はいい顔してる。ユーザーには待ち時間が表示されません。しかし、この点が適切かどうかはわかりません。バックグラウンド処理の時間は限られていると言う人もいます。

4

1 に答える 1

1

いずれにせよ、セカンダリ スレッドでクリーンアップを実行することでメリットが得られる可能性が高くなります。ただし、2 番目のオプションを使用できない可能性が最も高いでしょう。

に関するAppleのドキュメントによるとapplicationWillTerminate

このメソッドの実装では、タスクを実行して戻るまでに約 5 秒かかります。時間が経過する前にメソッドが戻らない場合、システムはプロセスを完全に強制終了する可能性があります。

使用できるオプションの 1 つはクリーンアップですapplicationDidEnterBackground:が、これにはいくつかの複雑な問題もあります。

このメソッドの実装では、タスクを実行して戻るまでに約 5 秒かかります。最終タスクを実行するために追加の時間が必要な場合は、beginBackgroundTaskWithExpirationHandler: を呼び出して、システムから追加の実行時間を要求できます。実際には、できるだけ早く applicationDidEnterBackground: から戻る必要があります。時間がなくなる前にメソッドが返されない場合、アプリは終了し、メモリから消去されます。

これはより良い解決策である可能性があり、リンク先のドキュメントを介していくつかの推奨事項を掘り下げることができます. アプリケーションの起動時に行うのがおそらく最も簡単でしょう。

于 2013-10-30T15:05:46.237 に答える