【发布时间】:2015-07-21 20:52:23
【问题描述】:
在我的 android 应用程序中,我将一个锻炼对象持久化到领域。在我的一项活动中,我使用以下代码创建了一个对象:
realm.beginTransaction();
Workout w = realm.createObject(Workout.class);
w.setmWorkoutId(UUID.randomUUID().toString());
realm.commitTransaction();
这是我的健身课:
public class Workout extends RealmObject{
private String mWorkoutId;
private int restSecsLeft;
private boolean prevSetOver = true;
private boolean workoutOver = false;
public Workout(){}
public String getmWorkoutId() {
return mWorkoutId;
}
public void setmWorkoutId(String mWorkoutId) {
this.mWorkoutId = mWorkoutId;
}
public int getRestSecsLeft() {
return restSecsLeft;
}
public void setRestSecsLeft(int restSecsLeft) {
this.restSecsLeft = restSecsLeft;
}
public boolean getPrevSetOver() {
return prevSetOver;
}
public void setPrevSetOver(boolean prevSetOver) {
this.prevSetOver = prevSetOver;
}
public boolean getWorkoutOver() {
return workoutOver;
}
public void setWorkoutOver(boolean workoutOver) {
this.workoutOver = workoutOver;
}
}
我有一个在创建锻炼后运行的服务,并且在调试了奇怪的行为之后,发现了一个实例,其中保存在锻炼 RealmObject 中的prevSetOver 的值与从w.getPrevSetOver() 返回的值不同。我不确定这是怎么发生的——在实例化对象后,我不会更改变量 prevSetOver 的值。我是一个新的领域用户,不明白这是怎么回事。我附上的图片是w.prevSetOver()方法和具有不同值的RealmObject的截图。
此屏幕中的调试器中有更多变量,为了简单起见,我在帖子中省略了大部分变量。
【问题讨论】:
-
你应该使用
executeTransaction()而不是begin/commitTransaction()