从安卓中删除单个对象 realm.io 如果它仍然存在



我使用 realm 来存储稍后在 ListView 中显示的项目。这些项目有一个删除按钮,如果用户单击该按钮两次,应用程序就会崩溃,因为 realm 说该对象不再有效,无法操作。有没有比尝试捕获该异常并忽略它更优雅的解决方案?

下面是 onClick 方法的代码:

@Override
public void onClick(View view) {
    Toast.makeText(context, "Timer " + timer.getUUID() + " was stopped.", Toast.LENGTH_SHORT).show();
    Realm realm = Realm.getDefaultInstance();
    realm.beginTransaction();
    RealmResults<Timer> result = realm.where(Timer.class).equalTo("uuid", timer.getUUID()).findAll();
    result.deleteAllFromRealm();
    realm.commitTransaction();
}

我意识到,由于我已经引用了该对象,因此我可以使用realms isValid()方法,请参阅我的代码:

@Override
public void onClick(View view) {
    Realm realm = Realm.getDefaultInstance();
    realm.beginTransaction();
        if (timer.isValid()) {
            Toast.makeText(context, "Timer " + timer.getUUID() + " was stopped.", Toast.LENGTH_SHORT).show();
            timer.deleteFromRealm();
        }
    realm.commitTransaction();
}

我还在 RealmObject 上找到了 deleteFromRealm() 方法,由于某种原因,我之前找不到它。
因此,正确的解决方案应该是:

RealmObject o = someRealmObject;
realm.beginTransaction();
if (o.isValid()) o.deleteFromRealm();
realm.commitTransaction();

相关内容

最新更新