![](/img/trans.png)
[英]How can I use Stetho with RoomDataBase in Android Studio?
[英]Can I use the same RoomDatabase object from multiple threads on Android?
我在Android上使用Room persistence库。 目前,每次访问数据库时都会有一些额外的同步代码。 我想知道这段代码是否必要。
我目前以单身人士的身份访问数据库。 这就是我当前将对象插入数据库的方式:
// Insert values into DB
final AppDatabase db = AppDatabase.get(this);
AsyncTask.execute(new Runnable() {
@Override
public void run() {
synchronized (db) {
for (WorkOrder wo : workOrderList) {
db.workOrderDao().insertAll(wo);
}
}
}
});
我是否需要在同步块中插入代码?
RoomDatabase
包装标准的SQLiteDatabase
,它是相当线程安全的,所有工作都在事务中完成。
我不太担心synchronized
和更多关于事务,因为现在,这项工作正在N个事务中完成(每个WorkOrder
一个)。 我会有一个insertAll(List<WorkOrder>)
,因此您可以在一个事务中执行此操作。 或者,如果出于任何原因这是不切实际的,请使用@Transaction
注释将循环移动到自己的方法中的@Dao
类,以指示整个方法应该在单个事务中执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.