在使用objectbox的时候,每一个Entity都需要一个空的构造函数,默认对象是有空构造函数的,但如果你写了一个有参数的构造函数时就需要自己写上一个空的构造函数了,不然在某些情况下,代码运行了,但没有反应且不会报错的。通常情况下是会报错的,说你缺少空的构造函数。在官方的文档上是有写,需要一个空的构造函数,但未必每次的记得。以下是一个没有反应但不会报错的例子(objectBox的版本:2.0.0-beta,以后的版本可能会有完善,对应版本来看)
objectBoxLiveData = new ObjectBoxLiveData<Test>(test.query().build());
objectBoxLiveData.observe(this, new Observer<List<Test>>() {
@Override
public void onChanged(@Nullable List<Test> test) {
Log.i("a", takeDrugRecords.size() + "");
}
});
如果test这个对象是没有空构造函数的话且有一个有参数的构造函数,就算调用了put也是没有用的,observer里面的onchange是不会被调用的。
如果你用相同的代码调用以下函数会报错:
List<Test> test1 = test.query().build().find();
说没有空的构造函数,这个在使用objectbox的时候要小心,不然一直走不出这个坑,希望以后官方会有改善吧。
(代码只是作为演示用,对象名等可能存在偏差,理解就好)