删除数据库后未调用ContentProvider onCreate [英] ContentProvider not called onCreate after deleting database

查看:203
本文介绍了删除数据库后未调用ContentProvider onCreate的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了ContentProvider,它在启动应用程序时创建了一个数据库.

I have created ContentProvider which creates one Database on application launching.

现在,在该应用程序中,当用户从应用程序注销时,我正在执行删除数据库的过程.

Now In that application, I am doing process of deleting database when user logout from app.

之后,当我再次登录时,ContentProvider无法调用覆盖类的 onCreate().

After that when I come again to login, the ContentProvider cant call onCreate() of overrided class.

是否可以使用ContentProvider重新创建数据库?

Is there any way to recreate database using ContentProvider?

推荐答案

我找到了解决方案,

首先,我引用了在还原后在自定义ContentProvider中刷新/重新加载数据库引用,但对答案不满意,因为它只是用于关闭数据库.

First of all I referred Refresh/Reload database reference in custom ContentProvider after restore but not satisfied with answer because its just for closing database.

所以我创建了如下答案:

So I have created my answer as below:

DBHelper.java

/**
 * Delete database
 */
public static void reCreateDatabase(Context mContext) {
    ContentResolver resolver = mContext.getContentResolver();
    ContentProviderClient client = resolver.acquireContentProviderClient(KOOPSContentProvider.AUTHORITY);

    assert client != null;
    KOOPSContentProvider provider = (KOOPSContentProvider) client.getLocalContentProvider();

    assert provider != null;
    provider.resetDatabase();

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
        client.close();
    else
        client.release();

    LOGD("Database Deleted...");
}

public void removeDatabase(Context mContext) {
    mContext.deleteDatabase(DATABASE_NAME);
    LOGD("Database Deleted...");
}

KOOPSContentProvider.java

public void resetDatabase() {
    if(dbHelper != null) {
        dbHelper.removeDatabase(getContext());
        dbHelper = new DbHelper(getContext());
    } else {
        LOGD("Database NULL");
    }
}

用途为:

DbHelper.reCreateDatabase(mContext);

谢谢:):)

这篇关于删除数据库后未调用ContentProvider onCreate的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆