1

オンラインで 2 つのソースからデータを取得する必要があり、それぞれの進捗状況を表示したいと考えています。データが収集されたら、リストビューに入力できます。

私の現在の実装は、MyActivity が LoaderCallbacks を実装し、それが MyDataLoader (AsyncTaskLoader を拡張するクラス) のインスタンスを作成することです。MyDataLoader の loadInBackground メソッドでは、すべてのソースからデータをフェッチし、Sqlite db に入力します。このデータベースは全体で使用できます。

問題は、プロセスのどこにいるのかについてユーザーにフィードバックを提供していないことです。

そのため、getLoaderManager().initLoader を使用してローダーをデイジーチェーン接続し、ローダーを作成してから、ローダーマネージャー内のローダーを 1 つずつ反復処理することを考えていました。各ローダーが終了して onLoadFinished に戻ると、progressDialog のテキストを設定して進行状況を示すことができます。

これは悪い考えですか?もっと簡単で良い方法はありますか?

4

1 に答える 1

2

s は別のスレッドのバックグラウンドでデータをロードするため、それLoaderは不可能です...データは「順次」ロードされないため、進行状況を表示しonLoadFinishedても、実際にどれだけ進行したかを正確に把握することはできません。

ユーザーが知る必要があるのは、データがバックグラウンドでロードされていることだけです。私の意見では、ダイアログ全体を起動することは少しやり過ぎであり、ユーザーエクスペリエンスを混乱させるようなものです. 私の頭の上にある2つの選択肢は次のとおりです。

  1. レイアウトまたはアクション バーに不確定な進行状況アイコンを表示します。

  2. レイアウトの中央にあるグレーアウトを表示しTextViewます。Loading...TextView、データが Web から取得され、画面に表示できるようになると、最終的に非表示になります。Google Analytics など、いくつかの Google 製アプリではこのオプションが選択されます。

于 2012-08-02T23:12:50.370 に答える