複数のスレッドからアクセスされるかなり大きなデータベースを保持する Android アプリケーションがあります。データベース ロック例外が発生し始めています。私の質問は、データベース キュー (iOS の FMDataBase.Queue に似ています) を作成する方法はありますか?
私はいくつかの調査を行いましたが、多くのデータベースクエリと挿入が異なるため、ヘルパークラスを作成したくないため、クエリごとにメソッドを作成することは現実的ではありません。
私は置くことができました
if(!db.isLocked)
{
//exec(BLAH)
}
else
{
//try{thread.sleep(1000);}... then some retry code
}
すべてのデータベース機能についてですが、これよりも良い方法があるはずです。
さらに、スレッドが 1000 ミリ秒スリープした後にスレッドがロックされた場合でもクラッシュし、データベースが 10 ミリ秒ロックされている場合、クエリが実行されるまで 990 ミリ秒待機することになります。
データベースがロック解除されると、データベースに送信されたコマンドが実行されるようにキューを作成することは可能ですか?
どんなアドバイスでも大歓迎です