2017-12-15 8 views
0

私はアンドロイドアプリでjavaを使用してルームのハングを取得しようとしています。私は問題に遭遇しましたが、データベースが2回目のクエリを受けた後にのみクエリが有効になります。ルームパーシスタンスライブラリのクエリがすぐに反映されないのはなぜですか?

例: アプリケーションには、「Return DB」と「Delete DB」の2つのボタンがあります。 「DBの削除」ボタンをクリックすると、メインアクティビティのメソッドが使用されます。このメソッドは、AsyncTaskを使用して、関連するDAOを呼び出します。つまり、エンティティのテーブルには現在、3つのレコード{A、B、C}があります。 "Delete DB"を押して "Return DB"を押すと、{}を返しますが、この場合でも{A、B、C}が返されます。この後、「Return DB」を2回押すと、{}が返されます。

これに新しいので、誰かが似たような問題に遭遇したことがあるのか​​不思議でした。ありがとう!

MainActivity.java

myEntityDao.java

. 
. 
. 
@Query("DELETE FROM MyEntity") 
void nukeTable(); 
. 
. 
. 
+0

削除タスクが完了するのを待ってから、2番目のボタンを押しますか?あなたの質問にそれのコードがないので、2番目のボタンは正確に何をしますか? – CommonsWare

答えて

0

おっとは、申し訳ありませんが、私はダムをしました。 AsyncTaskを実行してすぐに結果を記録していましたが、タスクがバックグラウンドスレッドで実行されているため、新しいデータを待つのではなく古いデータが記録されました。私は、AsyncTask自体にLogステートメントを配置する必要がありました。

関連する問題