ユーザーが明示的に [同期] ボタンを押した後、潜在的に大量のデータを Web からインポートし、Core Data を使用してそのデータを保存するアプリがあります。フィードバックを表示したいのですが、これが発生している間、ユーザーがアプリの残りの部分を操作したくないので、[同期] ボタンを押すと、モーダル ダイアログが表示されます。操作をすぐに実行したいので、操作は viewDidAppear メソッドで実行されます。私はこれが眉をひそめていると確信しています。
現在、このアプローチには多くの問題があります。
- すべてがメインスレッドで発生します。アニメーションを継続するアクティビティ インジケーターがあるため、ユーザーは一種のフィードバックを受け取りますが、進行状況を示したり、中間メッセージを表示したりする方法はありません。これは正しいやり方ではありません。
- しかし、Core Data を使用する場合は、すべてメイン スレッドを使用する必要があると聞いているため、作業を別のスレッドに分割するのは簡単ではないようです。
- アプリがバックグラウンド状態になると (ユーザーがホーム ボタンを押すか、iPad がスリープ状態になる)、ゲーム オーバーになり、操作が終了します。なぜこれが当てはまるのかは、ドキュメントから明らかです。
- 「バックグラウンドに移行しようとしています」というイベントを処理できることは知っていますが、ファイルのダウンロード中にコードの実行をある場所から別の場所に移動できるわけではありません。私が使用するソリューションは、バックグラウンドへの/からの遷移の前後に同じ方法で実行される継続的なアクションでなければなりません。
- ユーザーに関する限り、操作をフォアグラウンドで実行したい。この操作が行われている間、アプリの他の部分と対話することは意味がありません。
私はこれに関する Apple のドキュメントを読んでいますが、この特定のニーズの組み合わせに関するより簡潔なガイダンスを見つけることを期待して、これを尋ねています。ありがとう。