【发布时间】:2016-11-10 16:34:04
【问题描述】:
我在订阅者的方法onComplete()中制作了这段代码:
long size, perc;
public void onCompleted()
{
Log.wtf("on complete","On complete");
realm = Realm.getInstance(defaultConfig);
realm.executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm mRealm) {
AirportR airport = new AirportR();
size = airp.size();
Log.d("size:", String.valueOf(size));
for (int i = 0; i < airp.size(); i++)
{
airport.setId(Integer.parseInt(airp.get(i).getId()));
perc = i / size * 100;
Log.d("i + percentage", String.valueOf(i) + " - " + String.valueOf(perc));
mRealm.insertOrUpdate(airport);
}
}
}, new Realm.Transaction.OnSuccess() {
@Override
public void onSuccess()
{
}
}, new Realm.Transaction.OnError() {
public void onError(Throwable error) {
error.printStackTrace();
}
});
}
当我使用调试器时,我看到以下错误消息:
java.lang.IllegalStateException: Your Realm is opened from a thread without a Looper and you provided a callback, we need a Handler to invoke your callback
我发现如果我不使用 Transaction.Success() 和 Transaction.OnError() 效果很好,如果我使用它们,我只会遇到这个问题。
有办法解决吗?
谢谢
【问题讨论】:
标签: android multithreading realm rx-java