我有一个ObjectBoxLiveData
对象,该对象带有在运行时设置的查询:
private ObjectBoxLiveData<MyObject> myObjectLiveData;
public ObjectBoxLiveData<MyObject> getMyObjectLiveData(Box<MyObject> myObjectBox, String filterTerm)
{
if (myObjectLiveData == null)
myObjectLiveData = new ObjectBoxLiveData<>(myObjectBox.query().equal(MyObject_.filterProperty, filterTerm).build());
return myObjectLiveData;
}
但是我还需要能够在运行时更改filterTerm
。我的想法是,我可以在private String currentFilterTerm;
中创建一个MyViewModel
对象,以查看是否需要更新LiveData对象中的过滤条件,但是有没有正确的方法来更新过滤条件?我担心再次设置myObjectLiveData = new ObjectBoxLiveData<>
会为先前定义的myObjectLiveData
或与之相关的任何事情留下内存泄漏,但是我看不到任何优雅的方式来处理它或一旦定义就更新查询。定义后是否可以重新定义查询?