gpt4 book ai didi

Android Realm findAllAsync() 卡住 UI

转载 作者:搜寻专家 更新时间:2023-11-01 08:27:34 29 4
gpt4 key购买 nike

当我查询大量元素时,UI 会卡住。

realm.where(TVRealm.class).equalTo("favorite", true).findAllAsync()
.addChangeListener(new RealmChangeListener<RealmResults<TVRealm>>() {
@Override
public void onChange(RealmResults<TVRealm> element) {
List<TV> tvList = new ArrayList<>();
for (TVRealm tvRealm : element) {
tvList.add(prepareTV(TVRealm.toTV(tvRealm), true));
}
listener.onDataChange(tvList);
}
});

我认为 findAllAsync() 将在其他线程上运行并避免该问题,但事实并非如此。有谁知道如何避免这个问题?也许还有另一种不使用 findAllAsync() 方法的方法。

谢谢。

最佳答案

根据官方 Realm 文档,findAllAsync 在后台线程中工作。 https://realm.io/docs/java/latest/#asynchronous-queries

我认为您的数据变化太频繁,因此您尝试通知 ui 的频率太高。所以你阻止了ui。我猜您是在 onDataChange 方法中通知 RecyclerView 适配器。

此外,如果您的结果列表包含太多项目,每次当您的数据发生变化时,探索结果并将项目添加到新列表可能会阻塞 ui。

关于Android Realm findAllAsync() 卡住 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43379142/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com