私のアプリでは、UIと同期サービスを実装する必要があります。 これはバックグラウンドで実行され、データを更新します。同期サービスはあまり簡単ではなく、マルチスレッドを使用します。AndroidのSQLiteでマルチスレッドはどうですか?
これは私の話です。 このアプリケーションの開発を始めたとき、私はsqliteについて何も知らなかったので、Javaではスレッド同期を使用していません。結果: "SQLiteException:データベースがロックされている:BEGIN EXCLUSIVE;"のような多くの例外が発生しました。
次に、すべてのトランザクションを通常のJava synchronized(){}ブロックと同期させました。すべてがはるかに良くなった。しかし、CursorAdapterを実装するためにCursorを使用しました。だから、時々私は同じ "SQLiteException:データベースがロックされて:BEGIN排他的な取得していた"
私は、すべてのスレッドセーフなものを処理する小さなスレッドセーフなsqliteユーティリティを作成し終えました。また、私はArrayAdapterのようなものを使用しなければなりません(Cursorからすべてのデータを読み込み、読み込んだ後に閉じ、このブロックも同期させてください)。それで、うまくいきました。
しかし、私はUIを扱うのが好きではありません。このソリューションでは、UIが実際には遅くなっています。カーソルからいくらかのデータ量を読み込むのが速いですが、CursorAdapterを使うよりも遅いです。
だから、誰がこの質問の解決策を得ましたか? ありがとうございます
をあなたはUIが遅くなった意味はどうすればよいですか?接触などに応答するのに時間がかかりますか、データベースデータを表示するのに時間がかかりますか?データベースを読んでいるだけの場合は、トランザクションを使用しないでください。これにより、DBから複数の読み込みを一度に実行できます。 –
@Joseph Earl私は「データを表示するのに長い」という意味でした。はい、私はデータを読むときにトランザクションを使用しません。私はいくつかのデータを書くときにのみ使用します –