Java 当应用程序未打开时,当我尝试在域中插入数据时,我得到错误;无法在线程上自动更新领域>;没有活套;?

Java 当应用程序未打开时,当我尝试在域中插入数据时,我得到错误;无法在线程上自动更新领域>;没有活套;?,java,android,realm,Java,Android,Realm,我正试图通过FCM推送通知将数据插入我的领域数据库,现在当我的应用程序打开时推送通知到达时,一切正常,但当我的应用程序未打开时当通知到达时,当我尝试插入数据时,我得到了错误` java.lang.IllegalStateException:无法在上传递回调 当前线程。无法在线程上自动更新领域 没有活套 我的FCM代码 Realm realm = Realm.getDefaultInstance(); realm.executeTransactio

我正试图通过FCM推送通知将数据插入我的领域数据库,现在当
我的应用程序打开时
推送通知到达时,一切正常,但当
我的应用程序未打开时
当通知到达时,当我尝试插入数据时,我得到了错误`

java.lang.IllegalStateException:无法在上传递回调 当前线程。无法在线程上自动更新领域 没有活套

我的FCM代码

            Realm realm = Realm.getDefaultInstance();

            realm.executeTransactionAsync(new Realm.Transaction() {
                @Override
                public void execute(Realm bgRealm) {
                    story data = new story();
                    bgRealm.insertOrUpdate(data);
                }
            }, new Realm.Transaction.OnSuccess() {
                @Override
                public void onSuccess() {
                    // Transaction was a success.
                }
            }, new Realm.Transaction.OnError() {
                @Override
                public void onError(Throwable error) {
                    // Transaction failed and was automatically canceled.
                }
            });
有人能告诉我,当我的应用程序未打开时,我如何克服这个问题吗???

您正在使用

realm.executeTransactionAsync()
这会导致问题,相反,您应该使用syncronious版本

realm.executeTransaction()
对于异步查询,您需要一个循环器来确保查询结果可以在Android上返回。

您正在使用的

realm.executeTransactionAsync()
这会导致问题,相反,您应该使用syncronious版本

realm.executeTransaction()
对于异步查询,您需要一个循环器来确保查询结果可以在Android上返回