gpt4 book ai didi

android - 从另一个线程读取 RealmObject

转载 作者:行者123 更新时间:2023-11-29 19:32:39 25 4
gpt4 key购买 nike

我有一个 RealmObject User 存储在一个单例中并在整个应用程序中访问——它是在 UI 线程上检索的。该对象表示已登录的用户,与 Item 类具有一对多关系。在事务中更改它时,例如:

RealmSingleton.getUserInstance().executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
User user = realm.where(User.class).equalTo("mId",UserSingleton.getUser().getId()).findFirst();
user.deleteItem(mItem.getClassId());
}
});

这行不通,因为我在另一个线程中发生的事务中访问它。澄清一下,我在这里需要做的是将用户的 ID 存储在事务之外,然后在进行查询时在事务中访问该存储的变量,就像这样吗?

Integer userId = UserSingleton.getUser().getId();
Integer classId = mItem.getClassId();
RealmSingleton.getUserInstance().executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
User user = realm.where(User.class).equalTo("mId",userId).findFirst();
user.deleteItem(classId);
}
});

最佳答案

是的,没错。您不能在多个线程上访问一个对象,因此在您的情况下,存储对 ID 的引用并使用它来重新查询对象是正确的方法。

关于android - 从另一个线程读取 RealmObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39683149/

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