2

私のAndroidアプリでは、httpリクエストを作成し、データを取得してローカルのsqliteデータベースに入れ、そのデータを使用してグリッドビューにデータを入力しています。アクティビティ用にコードを動作させていますが、同様のページが多数表示されるため、フラグメントを使用してこれを実行する必要があります。Loader を使用することが、フラグメント内のデータを処理する最良の方法であると読みました。

私はよくわかりません:

  1. CursorLoader、Async taskLoader、または SQLiteLoader (commons guy が開発) を使用するかどうか。
  2. どのローダー関数 (onCreateLoader()、onLoadFinished() など) に、http リクエストを作成し、ローカル データベースにデータを入力し、フラグメントのグリッドビューに表示されるデータを取得するためのコードを配置しますか?
  3. また、レイジーロード リストを使用して画像を表示しています。ローダーを使用すると、全体にどのように収まりますか

誰でもこれで私を助けることができますか?良い例やチュートリアルを探してみましたが、本当に役立つものは見つかりませんでした。ですので、もしよろしければお勧めを教えてください。ありがとう

4

1 に答える 1

2

Whether to use CursorLoader, Async taskLoader or SQLiteLoader(developed by commons guy).

CursorLoader is for ContentProviders(which is not your case) and AsyncTaskLoader is the way to go. I haven't use the classes from Commonsware but if they allow overriding of some of their methods then I guess you can use it.

どのローダー関数 (onCreateLoader()、onLoadFinished() など) に、http リクエストを作成し、ローカル データベースにデータを入力し、フラグメントのグリッドビューに表示されるデータを取得するためのコードを配置しますか?

これらのコールバックはメイン UI で実行されるため (ほとんどの場合)、そこでネットワーク操作を行ってはなりません。Loaderサブクラスには、loadInBackgroundバックグラウンド スレッドで実行されるメソッドがあります。このメソッドではLoader、データのクエリを実行し、ネットワーク リクエストとデータベースの更新を配置できます。ただし、データベースに重複データを挿入しないように十分に注意する必要があります。

また、レイジーロード リストを使用して画像を表示しています。ローダーを使用すると、全体にどのように収まりますか

私はあなたのコードを見たことがないので、この 2 つの部分が関連しているとは思いません。GridViewのアダプターで遅延画像読み込みコードを直接使用していると思います。

私のアドバイスは、データのロード挿入にローダーを使用しないことです。これは、その目的がバックグラウンド スレッドでデータをロードすることだけであるためです (構成の変更を処理します)。あなたの特定の状況ではAsyncTaskLoader、データベースに新しいデータを照会する独自のものを作成します (または Commonsware のライブラリを使用します)。AsyncTask次に、http 要求を実行してデータベースにデータを挿入するためにnew を開始し、 (with ) のメソッドでLoader再起動をトリガーします。あなたがやろうとしていることに関連するいくつかの問題については、この同様の質問を見てください。onPostExecuteAsyncTaskgetLoaderManager().restartLoader...

于 2012-12-06T05:56:04.613 に答える