首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在事务中插入数据后不更新的可流动数据

在事务中插入数据后不更新的可流动数据
EN

Stack Overflow用户
提问于 2017-08-22 11:57:31
回答 1查看 360关注 0票数 1

当我们在插入新的数据基行后使用可流获取更新通知时,工作正常。

但是,当插入在另一个显式事务中完成时,可流性不会得到通知。

为了说明这个问题,我从android-architecture-components中分出了android-architecture-components,并向UserDaoTest.java添加了2种测试方法。

代码语言:javascript
复制
@Test
public void testFlowable() {
    // When subscribing to the emissions of the user
    final TestSubscriber<User> userTestSubscriber = mDatabase.userDao().getUser().test();

    userTestSubscriber.assertValueCount(0);

    // When inserting a new user in the data source
    mDatabase.userDao().insertUser(USER);

    userTestSubscriber.assertValueCount(1);
}

这个很好用。但是,当我在显式事务的内部执行相同的操作时,它不起作用:

代码语言:javascript
复制
@Test
public void testFlowableInTransaction() {
    // When subscribing to the emissions of the user
    final TestSubscriber<User> userTestSubscriber = mDatabase.userDao().getUser().test();

    userTestSubscriber.assertValueCount(0);

    // When inserting a new user in the data source
    mDatabase.beginTransaction();
    try {
        mDatabase.userDao().insertUser(USER);
        mDatabase.setTransactionSuccessful();

    } finally {
        mDatabase.endTransaction();
    }

    userTestSubscriber.assertValueCount(1);
    // this fails - the userTestSubscriber is still empty!
}

注意:这个例子当然是简化的,只是为了说明这个问题。

下面是生成的DaoImpl.insertUser()

代码语言:javascript
复制
  public void insertUser(User user) {
    __db.beginTransaction();
    try {
      __insertionAdapterOfUser.insert(user);
      __db.setTransactionSuccessful();
    } finally {
      __db.endTransaction();
    }
  }

我们可以看到这个代码使用一个事务,我的测试代码也使用另一个事务。

根据SupportSQLiteDatabase-初级事务()文档,嵌套事务应该是可以的。

这可能是房间窃听器吗?

这个项目的房间版本是1.0.0-alpha3,但是我也可以看到1.0.0-alpha8版本的这个问题(在另一个项目中)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-20 11:44:36

这是房间里的一个窃听器:#65471397

我验证了这个错误已经用1.0.0-rc1版本修复了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45817010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档