Android deleteAllFromRealm(RealmList:此方法仅在托管模式下可用

Android deleteAllFromRealm(RealmList:此方法仅在托管模式下可用,android,realm,Android,Realm,Android Studio 3.2.,Realm 4.1.0 我需要从域中删除列表中的所有项 我的片段: public static RealmList<Merchant> getMerchantsRealmList() { Realm realm = Realm.getDefaultInstance(); try { RealmResults<Merchant> realmResults = realm.

Android Studio 3.2.,Realm 4.1.0

我需要从域中删除列表中的所有项

我的片段:

    public static RealmList<Merchant> getMerchantsRealmList() {
        Realm realm = Realm.getDefaultInstance();
        try {
            RealmResults<Merchant> realmResults = realm.where(Merchant.class).findAll();
            RealmList<Merchant> realmList = new RealmList<>();
            realmList.addAll(realmResults.subList(0, realmResults.size()));
            return realmList;
        } finally {
            realm.close();
        }
    }

 public static void updateMerchantList(final List<Merchant> thatMerchantsList) {
        Realm realm = Realm.getDefaultInstance();
        try {
            realm.executeTransaction(new Realm.Transaction() {
                @Override
                public void execute(Realm realm) {
                    RealmList<Merchant> localMerchantRealmList = getMerchantsRealmList();
                    if (!EqualsUtil.areEqualContentLists(localMerchantRealmList, thatMerchantsList)) {
                        List<Merchant> itemNotExistInThatMerchants = new ArrayList<>(localMerchantRealmList);
                        itemNotExistInThatMerchants.removeAll(thatMerchantsList);
                        if (itemNotExistInThatMerchants.size() > 0) {
                            localMerchantRealmList.removeAll(itemNotExistInThatMerchants);
                            localMerchantRealmList.deleteAllFromRealm(); // error here
                        }
                    }

                }
            });
        } finally {
            realm.close();
            Debug.d(TAG, "updateMerchantList: finish");
        }
    }
此处显示错误:

java.lang.UnsupportedOperationException: This method is only available in managed mode.
    at io.realm.RealmList.deleteAllFromRealm(RealmList.java:660)
    at com.myproject.customer.service.MerchantService$1.execute(MerchantService.java:107)
    at io.realm.Realm.executeTransaction(Realm.java:1393)
    at com.myproject.customer.service.MerchantService.updateMerchantList(MerchantService.java:70)
    at com.myproject.customer.service.SyncService$1.onSuccess(SyncService.java:49)
    at com.myproject.customer.api.DefaultRestClientCallback.onResponse(DefaultRestClientCallback.java:31)
    at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:70)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5417)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

使用将
RealmResults
转换为
RealmList

RealmList<Merchant> realmList = new RealmList<>();
realmList.addAll(realmResults.subList(0, realmResults.size()));
RealmList RealmList=new RealmList();
realmList.addAll(realmResults.subList(0,realmResults.size());
您创建了数据的非托管版本,这意味着列表中的对象不再连接到数据库,基本上是普通Java对象


您必须保留对
RealmResults
的引用,并将其删除。

当您使用将
RealmResults
转换为
RealmList

RealmList<Merchant> realmList = new RealmList<>();
realmList.addAll(realmResults.subList(0, realmResults.size()));
RealmList RealmList=new RealmList();
realmList.addAll(realmResults.subList(0,realmResults.size());
您创建了数据的非托管版本,这意味着列表中的对象不再连接到数据库,基本上是普通Java对象


您必须保留对
RealmResults
的引用并从中删除。

RealmResults.removeAll()是去擦洗。我可以使用什么?
RealmResults.deleteAllFromRealm()
RealmResults.removeAll()是去擦洗。我可以使用什么?
RealmResults.deleteAllFromRealm()