ObjectBox IllegalStateException:存储已关闭,重新打开BoxStore

时间:2018-08-02 07:35:08

标签: java android objectbox

我使用的是ObjectBox版本的 1.5.0

这是从数据库中删除所有数据的方法。

public static void clearAllData(){
    mApp.getBoxStore().close();
    mApp.getBoxStore().deleteAllFiles();
}

我想在用户按下注销按钮时从ObjectBox删除所有数据。上面的方法是删除所有数据,但是当我想添加数据时再次出现

IllegalStateException: Store is closed

问题:如何重新关闭已关闭的BoxStore

1 个答案:

答案 0 :(得分:0)

ObjectBox中添加数据之前请重新调用此行(如果有更好的解决方案,请纠正我)

boxStore = MyObjectBox.builder().androidContext(this).build();

详细答案:

Application类中

public class BaseApplication extends Application {

    public static BaseApplication mInstance;
    private BoxStore boxStore;

    public static synchronized BaseApplication getInstance() {
        return mInstance;
    }

    @Override
    public void onCreate() {
        super.onCreate();

        mInstance = this;

        initializeBoxStore();
    }

    public BoxStore getBoxStore() {
        /* From this method we can get always opened BoxStore */
        if (boxStore != null && boxStore.isClosed())
            initializeBoxStore();
        return boxStore;
    }

    private void initializeBoxStore() {
        boxStore = MyObjectBox.builder().androidContext(this).build();
    }
}

clearAllData方法中

public static void clearAllData(){
        BoxStore boxStore = mApp.getBoxStore();
        boxStore.close();
        boxStore.deleteAllFiles();
}

这解决了我的问题。