* Android Realm *经过多次查询后,插入速度会很慢

时间:2016-11-09 01:52:13

标签: android canvas realm

我正在为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();
            }
        }
    }
});

0 个答案:

没有答案