Я пытаюсь вставить данные в свою БД Realm через push-уведомление FCM, теперь, когда my app is opened и когда приходит push-уведомление, все работает нормально, но когда my App is not opened и когда приходит уведомление, тогда, когда я пытался чтобы вставить данные я получил ошибку `

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.
                }
            });

Может ли кто-нибудь сказать мне, как я могу решить эту проблему, когда мое приложение не открывается?

0
Sudhanshu Gaur 2 Янв 2018 в 19:26

1 ответ

Лучший ответ

Ты используешь

realm.executeTransactionAsync()

Это вызывает проблему, вместо этого вы должны использовать синхронную версию.

realm.executeTransaction()

Для асинхронных запросов вам понадобится петлитель, чтобы гарантировать, что результат запроса может быть доставлен обратно на Android.

2
Misha Akopov 2 Янв 2018 в 16:50