0

私のAsyncTaskはデータを取得するのに長い時間を要し、同時にrecyclerviewの構築中にcursorloaderがコンテンツプロバイダから正しくクエリできたかどうかを確認したいと考えました。AsyncTaskとCursorLoader [Android]

私にここで負担してください、私は結果を得るためにローダーコールバックinterfaceonLoadFinishedを使用しました。 asynctaskがまだ実行中であるため、ローダーはコンテンツプロバイダを呼び出して、asynctaskが終了するまで更新されます。私はの内容がadapterの内容を主に扱っているので、asynctaskが実行され続けるのと同時にログステートメントを同時に出力することを心配すべきではないが、私は確認したかった。

私は最終的にasynctaskbroadcast経由でのみ呼び出されるintentserviceに移動するつもりです。

+0

私は正直言って本当にあなたが望むものを理解していない。後で結果を得たいのですか? –

+0

また、試したコードをいくつか追加してください。私は助けができません私はほとんど質問を理解していない場合、私は何かが試して表示されない場合。 –

+0

お詫び申し上げます。私は急いで質問を書いて、それについて自分自身を考えながら眠りについた。 asynctaskが実行されていて、asynctaskが完了するまで、カーソルローダーが新しいデータの流れに合わせてリフレッシュを続けている間、asynctaskが実行され、コンテンツプロバイダに挿入されています。これは、プログラムが最初に起動したときにのみ発生するため、最終的に私が実装している間、UIとRecycler Viewに影響を与えて行の下にロードされます。 – kthieu

答えて

0

getLoaderManager().restartLoader(URL_LOADER, null, HomeFragment.this);を呼び出して、AsyncTask onPostExecuteメソッドでローダーを再起動することができます。最初にローダをonCreate()メソッドで初期化する必要があります。

このようにして、ローダーは起動時と同じプロジェクションでリフレッシュし、AsyncTask操作の結果をDBからフェッチします。

+0

正しいアプローチのようですが、別のファイルにあるasynctaskからLoaderManagerを呼び出す方法を見つける必要があるかもしれません。 私の断片が読み込みのためのコールバックメソッドを実装するというコードを私に与えずに良い推測をしました。私はそれについて考えるために眠る前に、ポストを数秒で作った。 – kthieu

+0

@あなたはEventBus、Otto、または他のイベント指向のライブラリをPurpouseに使うことができます。 – axierjhtjz