问题描述
首先,此行为仅从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 (将#修改为@)