【问题标题】:Realm causes ANR error with no error message.领域导致 ANR 错误,没有错误消息。
【发布时间】:2017-05-24 08:36:24
【问题描述】:

我听说 Realm 和在主线程中使用一样快。 但有时,当我插入或更新我的数据(甚至只是一个文本!)时,它会导致 ANR 错误并且无事可做。 我不知道为什么会这样。因为也没有错误信息。

我已经在调试模式下检查过,所以我发现系统一直执行到刚刚

realm.executetransaction

然后,断点消失,无事可做... 有没有像我这样有问题的人..? 请帮忙

【问题讨论】:

  • 包含源代码
  • 如果你的后台线程事务需要很长时间,那么在 UI 线程上打开事务会阻塞 UI 线程。您的代码中也有可能有人使用realm.copyFromRealm(),即使他们不应该这样做。

标签: java android realm breakpoints android-anr-dialog


【解决方案1】:

在领域文档中,建议在从 UI 线程写入领域时使用异步事务,因为写入事务有时会阻塞。这可能会导致主线程中的 ANR。请在此处进一步了解异步事务:Realm docs

以下是文档中异步事务的示例:

RealmAsyncTask transaction = realm.executeTransactionAsync(new 
        Realm.Transaction() {
            @Override
            public void execute(Realm bgRealm) {
                User user = bgRealm.createObject(User.class);
                user.setName("John");
                user.setEmail("john@corporation.com");
            }
        }, null);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    相关资源
    最近更新 更多