我有以下代码:
boolean gameSuccess = false;
@Override
public boolean saveMission(final Mission mission) {
realm = Realm.getInstance(realmConfiguration);
realm.executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
realm.copyToRealm(mission);
}
}, new Realm.Transaction.OnSuccess() {
@Override
public void onSuccess() {
Log.d(TAG, "onSuccess: mission saved");
realm.close();
missionSuccess = true;
}
}, new Realm.Transaction.OnError() {
@Override
public void onError(Throwable error) {
Log.d(TAG, "onError: mission failed");
realm.close();
missionSuccess = false;
}
});
return gameSuccess;
}
即使调用onSuccess,gameSuccess也始终为false。完成这项工作的方法是什么?
答案 0 :(得分:0)
异步不会阻塞,因此您的代码错误。交易在返回之前不会发生,但是之后的任何未指定的时间,这就是为什么它总是错误的。
您需要为您的方法提供回调或将事务转换为阻止
realm.executeTransaction(...)
或
{{1}}