0

AsyncTaskオブジェクト内のローカルデータストレージを検証する多くのXMLデータを処理しています。最初にこれらの操作にトランザクションを使用しようとしましたが、トランザクションの進行中に、ユーザーによる他のアクションによってアプリがフリーズし、トランザクションが終了するのを待ち、場合によってはアプリの応答を停止することもあります。

トランザクションはいくつかのステップに分割され、反復ごとに数百にカウントされることもあります。問題のために、トランザクションの使用からリアルタイムクエリに移行しました。これは非常に低速ですが、フリーズを解決します。その結果、非常にバッテリーを消費するアプリケーションになります。

私の質問は; トランザクションによるデータベースのロックを停止する方法はありますか?それとも、私の問題は取引前の準備不足の結果ですか?

4

2 に答える 2

0

トランザクションは、ビジネスを行っている間、テーブルをロックする傾向があるため、トランザクションと非トランザクション クエリを同じインスタンスで同時に実行することはできません。

ただし、最初にデータ (xml) を処理し (時間がかかる場合があります)、データの準備ができたらトランザクションを開始する必要があります。

PS 複数のレコードを挿入する場合は、トランザクションを (効率的な方法で) 利用することを個人的にお勧めします。これは、単一のジャーナル ファイルを作成してすべての挿入を処理し、SQLite 操作を大幅に高速化するためです。

于 2012-05-08T07:24:01.153 に答える