-1

私のアプリは、サービスとしてバックグラウンドで中継APIから2週間に1回バスルートのリストを更新し、そのリストをsharedpreferencesに保存します。ユーザーがアプリを初めて起動すると、アプリはバックグラウンドでサービスを開始し、XMLデータをダウンロードし、解析してsharedpreferencesファイルにArrayListとして保存します。UIの更新中にこのバックグラウンドプロセスを処理する最善の方法は何ですか?

ランチャーアクティビティはマップですが、初めてアプリケーションを起動するときに、ユーザーが「すべてのバスルートのリスト」アクティビティに移動すると、XMLが解析されている間は画面が空白になります。データ接続が遅い場合は、しばらくブランクのままです。 UIでリストを表示する前にサービスが終了している間に回転ローダーを表示することを考えていましたが、回転ローダーをバックグラウンドサービスに同期させる方法がわかりません。どのようにこの問題に近づくかについての提案は非常に高く評価されます。

ありがとうございました。

答えて

0

私は通信にブロードキャストインテントを使用します。 UIにProgressBarをデフォルトでは表示されませんが、データがまだ存在しない場合は表示されます。 BroadcastReceieverをバスルートリストのアクティビティに登録し(適切な場所で登録を解除する)、サービスが終了するとブロードキャストインテントを送信することができます。それを受け取るために何も登録されていなければ、それは処理されません。ただし、説明したケースが発生した場合は、データが準備完了であることが通知されます。スピナーを非表示にし、データを表示します。

+0

素晴らしい!あなたのご意見ありがとうございます。 – Plex752

関連する問題