, iki ardışık işlemler yapılması gerektiğini vardır bir şartı var) bazı satırların eksik olduğu - yerleştirildikten sonra silinmekte olduğunu farz ediyorum. yani. İlk işlem, ikinci paralelde koşuyor. Bir işlem bloğu kullanırsanızAndroid Odası veritabanı işlemleri Android'de yeni Odası Database ile
, bunun gibi, o zaman ince hepsi - Birinci operasyon ikinci yapmadan önce tamamlamak için görünüyor: Ben yerine aralarında mükemmel bir uyku verirsen
roomDb.beginTransaction();
removeRows(ids);
roomDb.endTransaction();
insertRows(ids);
Ayrıca gayet :
removeRows(ids);
Thread.sleep(500);
insertRows(ids);
orada Odası için çok dokümantasyon olmak görünmüyor, ben de yapılması gereken sıralı işlemleri varken yukarıdaki gibi işlem bloğu kullanmalısınız acaba, ya yapmanın daha iyi bir yol yoktur o.
DÜZENLEME: @CommonsWare işaret sonra @Insert
ve @Delete
senkron iken, @Query
, asenkron bulunmaktadır. Bir Flowable
dönüş türünü sarmak için çalışırsanız, ben Deletion methods must either return void or return int (the number of deleted rows)
olsun inşa çıkışına göre
@Query("DELETE from table WHERE id IN(:ids)")
int removeRows(List<Long> ids);
: Bu bakışa göre, nasıl satırlar zaman uyumsuz olması silen bir sorgu tanınacak.
tam 'removeRows()' ve 'InsertRows()' gerçeklenimcilerine nelerdir? Eğer '@ Delete' ve' Insert 'DAO metotları düzse, bu yöntemler senkronize olarak yürütüldüklerinden, doğal olarak serileştirilmelidirler. Oda'nın eşzamansız şeyler yaptığı tek yer, reaktif bir dönüş değeri olan '@ Query' üzerindedir (' LiveData'', Flowable' vb.). – CommonsWare
@CommonsWare, evet, insertRows() 'basittir' Ekle ', 'removeRows()' 'Query' çağrıları vardır. Sanırım bunu açıklıyor. Yani, sanırım soruma cevap, Sorguların tepkisel yanıtına abone olmaktır. – rajath
@CommonsWare, Yardımlarınız için teşekkürler. Sorunuzu, yorumunuza dayalı bir takip ile düzenledim. Tamamlanana kadar gözlemleyebilmem için 'DELETE 'yapan bir' @ Query' nasıl yazabilirim? – rajath