0

カーソルアダプタに裏打ちされたドラッグアンドドロップリストビューを使用しています。データベースを維持するために、ビューをドラッグするときにデータベースエントリの位置を更新しています。このために、SQLiteDatabase.rawQueryの従来のメソッドを使用し、更新操作が完了したら、notifyDataSetChangedを呼び出してcursoradapterのbindviewメソッドを呼び出します。エントリを再配置します。ただし、これはUIに遅れをとっており、アプリが応答しなくなります。データベースの単一のインスタンスを使用して、すべてのデータベース操作をAsyncTaskに移動しようとしました。スレッドがキューに入れられ、リストビューは各非同期タスクが完了するまで待機する必要があるため、これもUIに遅れをとっています。

私のListViewは、クエリが完了するのを常に待っています。

このシナリオの正しい実行方法は何ですか?CursorLoaderを使用すると、きびきびとしたUIが得られますか?

多くのアプリが効率的にドラッグアンドドロップを実行しているのを見てきましたが、それらのほとんどはアレイアダプターを使用しています。ただし、リストビューの入力が移動したため、データベースを更新する必要があります。

効率的な方法を教えてください...

編集:わかりました、非同期タスクがキューに入れられていないことがわかったので、構造を再実装しています。それらは並行性のために作られています。

尋ねるべき正しい質問は、データベースクエリをFIFO順にキューに入れる方法です。それに関するポインタはありますか?

よろしく、Parvaz Bhaskar

4

1 に答える 1

0

最終的に、スレッドを実装し、1つのハンドラーのみを使用してクエリを投稿することにより、データベースへのFIFO呼び出しを管理しました。これによりデータベースクエリがキューに入れられ、事前にUIを更新しました...したがって、クエリが終了するのを待つ必要はありません。

私が見つけたすべてのリンクが最終的にSOリンクであったことをSOに感謝します。

于 2013-03-12T05:52:30.777 に答える