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
再起動をトリガーします。あなたがやろうとしていることに関連するいくつかの問題については、この同様の質問を見てください。onPostExecute
AsyncTask
getLoaderManager().restartLoader...