3

フラグメントとコンテンツ プロバイダーを使用してローカルの sqlite データベースにアクセスする Android アプリがあります。リストビューは、表示がクエリ結果に基づくように、複数のデータベース クエリに依存することがよくあります。3 つのカーソルローダーがあると仮定すると、ローダー 3 を実行する前にローダー 1 と 2 の両方が完了していることを確認するにはどうすればよいですか?

4

1 に答える 1

1

カウンター ( ) で開始されたすべてのローダーを追跡し、protected int loadersToRun,loadersCompleted=0;それぞれのonLoadFinished関数を呼び出します。

public void checkLoadersFinished(){
    loadersCompleted++
    if(loadersCompleted==loadersToRun){
        //Start loader 3
        loadersCompleted=0;
    }
}

物事を動的に機能させる必要がある場合は、 の一連のローダー ID にデフォルトのケースを使用し、それを実行することで実現できonLoadFinishedますcheckLoadersFinished。Treeset を使用してローダーごとに一意の ID を生成し、それらを追跡して完了時に削除します。

于 2012-07-10T20:20:13.280 に答える