我正在为Android开发绘图应用。使用Realm跟踪和存储路径。但是,当我在画布上绘制某些东西时,它变得指数级慢。 通过各种测试,我注意到这种情况发生在特定情况下。当用户多次使用撤消功能时,同时请求多个查询。在这样做之后,我可以看到应用程序在Canvas上绘制笔非常慢(将数据插入Realm)。真正奇怪的是,如果从另一个表请求查询,速度将恢复正常。
我检查过它并不是画布中发生的事情。 (所有代码都已在Canvas中删除) 在我发出请求SELECT查询后,我已经检查过它会变慢。
public void executeUndo(int id, int noteId) {
Realm realm = Realm.getDefaultInstance();
RealmResults<SomeTable1> packets = realm.where(SomeTable1.class)
.beginGroup()
.equalTo("command", "SomeCommand1")
.or()
.equalTo("command", "SomeCommand2")
.or()
.equalTo("command", "SomeCommand3")
.or()
.equalTo("command", "SomeCommand4")
.endGroup()
.equalTo("noteId", noteId)
.findAllSorted("id", Sort.DESCENDING);
// ... Some codes (codes are commented)
realm.close();
}
以下是将对象存储到领域
的代码mThread = new Thread(new Runnable() {
public void run() {
Realm realm = Realm.getDefaultInstance();
while (true) {
if (!Queue.getInstance().realmObjects.isEmpty()) {
realm.beginTransaction();
realm.copyToRealm(Queue.getInstance().realmObjects.pop());
realm.commitTransaction();
}
}
}
});