Apple Healthリポジトリから大量のデータを読み込んでいます。私はいくつかの種類のデータを読んでいます。それぞれの種類のデータについて、すべてのソースからすべてのデータを要求しています。ソースクエリを実行してデータ型ごとにすべてのソースを取得し、データ型ごとにソースごとにすべての時間に対してデータクエリを実行します。データ処理とネットワーク関連の長いコールバックを待っているときに、アプリケーションが「いつまで来るか」を確認する方法
データが取得されると、アルゴリズムでデータを集計し、集計の結果をリモートサーバーにアップロードして、ユーザーのアカウントデータをデバイス間で同期させます。
この構造の結果、ソース 当たり
(1)各ソースのソースのリスト (2)を返すコールバックを使用してクエリ、各ソースのデータを返し、別のクエリでありますコールバック (3)最後のコールバックでは、データが処理され、アップロードの準備が整います。アップロードが完了すると、最終的なコールバックがあります。
クエリのタイミングや数がわかりません。私はまた、HealthKitのコールバックが返されないことがあることに気付きました(私は、基礎となるSQLite dbが応答を停止する/接続をタイムアウトすることと何か関係があると思います)。
プロセスが終了したら、どうすればわかりますか?私は、アプリが「読み込み/書き込みがなく、もはやネットワーク活動がない」という意味の「安静になった」ことを知る方法を見つけたいと思っています。これを行う良い方法は、例えば、過去30秒間にアプリのアクティビティをチェックし、ネットワークや読み取り/書き込みのアクティビティがない場合は、プロセスが完了したことを宣言して、再びUIを利用できるようにすることです。