2

私はの. しかし、から追加/削除しようとすると、.databaseAndroid ApplicationRealmChangeListenerRunnableexception

java.lang.IllegalStateException: 非ルーパー スレッドからリスナーを削除/登録することはできません

Runnable を使用しなくても問題なく動作しています。以下は私のコードです:

public void clearDatabase(final RealmChangeListener realmChangeListener) {
        Realm realm = RealmManager.getNewInstance().getRealm();
        realm.addChangeListener(realmChangeListener);
        realm.beginTransaction();
        realm.clear(RBooking.class);
        realm.commitTransaction();
    }

作業コード:

protected void clearData() {
        mDatabaseManager.clearDataBase(new RealmChangeListener() {
            @Override
            public void onChange() {
                TLog.d("Feb 23 : Database has been clean completed!");
            }
        });
    }

編集:動作しないコードを更新:

protected void processLogout() {
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                Looper.prepare();

                mDatabaseManager.clearDataBase(new RealmChangeListener() {
                    @Override
                    public void onChange() {
                        TLog.d("Feb 23 : Database has been clean completed!");
                    }
                });
                Looper.loop();
            }
        };
        doTask(runnable); // excute the runnable
    }

したがって、RealmChangeListener が Runnable で正しく動作するようにするには、どのような団体でもサポートできます。ありがとうございました。

4

2 に答える 2