重新启动设备后无法重新打开数据库

问题描述

首先,此行为仅从Android 8.0开始发生

我在设备的根目录中有一个数据库(已加载信息),该数据库是在使用context.openorCreateDatabase(String name,int mode,CursorFactory factory)启动应用程序时打开的,它运行良好,我什至可以关闭应用程序,而无需重新打开数据库任何问题。

问题是重新启动设备时,由于某种原因,无法再加载数据库,并且由于使用了上述方法,它尝试创建一个数据库,因此覆盖了根目录中加载的数据库设备的...

编辑:我注意到重新启动设备后,我可以使用 设备文件资源管理器在打开数据库之前先打开数据库 应用程序,之后我可以从应用程序启动数据库 没有问题...

我正在使用Dagger进行注射:

    @Provides
    @Singleton
    DBHelper provideDatabaseHelper(Application context) {
        //[ Attemping to load database... 
        context.openorCreateDatabase(Environment.getExternalStorageDirectory() + "/DB.db",Context.MODE_PRIVATE,null);

       //[ Create an instance of OrmlitesqliteOpenHelper
        return DBHelper.getInstance(context);
    }

DBHelper.java

public class DBHelper extends OrmlitesqliteOpenHelper {

    private static final String DATABASE_NAME = Environment.getExternalStorageDirectory() + "/DB.db";
    private static final int DATABASE_VERSION = 71;
    private static DBHelper mInstance = null;

    public static DBHelper getInstance(Context ctx) {
        if (mInstance == null) {
            mInstance = new DBHelper(ctx.getApplicationContext());
        }
        return mInstance;
    }

    private DBHelper(Context ctx) {
        super(ctx,DATABASE_NAME,null,DATABASE_VERSION);
    }

    @Override
    public void onCreate(sqliteDatabase db,ConnectionSource connectionSource) { }

    @Override
    public void onDowngrade(sqliteDatabase db,int oldVersion,int newVersion) { }

    @Override
    public void onUpgrade(sqliteDatabase db,ConnectionSource connectionSource,int newVersion) { }

    @Override
    protected void finalize() throws Throwable {
        super.finalize();
        this.close();
    }

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)