2017-02-08 8 views
0

Я начал получать следующую ошибку, казалось бы, в случайном порядке. Я захватываю объект Realm и использую его для визуализации экрана, я также (потенциально) обновляю RealmObject в фоновом (сетевом) потоке.Realm BadVersionException

Я использую Realm Java 2.3.0.

Любые подсказки относительно того, как я мог бы исследовать это дальше, было бы здорово!

Гав

java.lang.Error: io.realm.internal.async.BadVersionException: std::exception in /home/cc/repo/realm/realm-java-release/realm/realm-library/src/main/cpp/io_realm_internal_TableQuery.cpp line 1143 
    at io.realm.AndroidNotifier.throwBackgroundException(AndroidNotifier.java:138) 
    at io.realm.RealmQuery.closeSharedRealmAndSendEventToNotifier(RealmQuery.java:2239) 
    at io.realm.RealmQuery.access$000(RealmQuery.java:62) 
    at io.realm.RealmQuery$5.call(RealmQuery.java:2179) 
    at io.realm.RealmQuery$5.call(RealmQuery.java:2153) 
    at io.realm.internal.async.BgPriorityCallable.call(BgPriorityCallable.java:36) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
    at java.lang.Thread.run(Thread.java:818) 
Caused by: io.realm.internal.async.BadVersionException: std::exception in /home/cc/repo/realm/realm-java-release/realm/realm-library/src/main/cpp/io_realm_internal_TableQuery.cpp line 1143 
    at io.realm.internal.TableQuery.nativeFindWithHandover(Native Method) 
    at io.realm.internal.TableQuery.findWithHandover(TableQuery.java:448) 
    at io.realm.RealmQuery$5.call(RealmQuery.java:2162) 
    at io.realm.RealmQuery$5.call(RealmQuery.java:2153)  
    at io.realm.internal.async.BgPriorityCallable.call(BgPriorityCallable.java:36)  
    at java.util.concurrent.FutureTask.run(FutureTask.java:237)  
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)  
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)  
    at java.lang.Thread.run(Thread.java:818)  
+0

Честный ответ заключается в том, что система уведомлений о хранении объектов не должна использоваться вместе с прямыми асинхронными запросами, но это так, поэтому асинхронные запросы немного нестабильны до тех пор, пока не будет выполнено 2.4.0. Это печально, потому что у 1.2.0 этой проблемы не было. – EpicPandaForce

+0

Cheers EpicPandaForce. У меня не было проблемы с 2.3.1, но это могло быть совпадением. Я буду следить за 2.4.0 и видеть, что происходит потом. –

+0

Эй Эпик, не возражаете ли вы немного разобраться в «системе уведомлений о хранилище объектов, не следует использовать вместе с прямыми асинхронными запросами ядра»? Мне интересно, неправильно ли я неправильно структурировал или если это что-то внутреннее для Царства? –

ответ

0

Шаг 1: Добавьте следующую зависимость пути класса на уровне build.gradle файла проекта.

`buildscript {

repositories { 

    jcenter() 

} 

dependencies { 

    classpath "io.realm:realm-gradle-plugin:2.3.0" 

} 

}`

Шаг 2: Нанести Сферу-андроид плагина к началу файла build.gradle уровня приложений.

apply plugin: 'realm-android' 
+0

Спасибо за ваш ответ, у меня есть реальность и работает (это отличная БД!). У меня просто есть эта неутешительная проблема время от времени (в настоящее время Testing 2.3.1, чтобы узнать, помогает ли это мне). –