我想在SD卡上创建一个sqlite数据库(不想用尽用户的内部存储).我熟悉OpenHelper模式:
public DatabaseFoo(Context context) {
OpenHelper openHelper = new OpenHelper(context);
mDb = openHelper.getWritableDatabase();
}
private static class OpenHelper extends SQLiteOpenHelper {
public OpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
...
Run Code Online (Sandbox Code Playgroud)
所以,如果我们想在SD卡上创建,我认为我们必须使用:
public static SQLiteDatabase openOrCreateDatabase (String path,
SQLiteDatabase.CursorFactory factory);
Run Code Online (Sandbox Code Playgroud)
但是什么是"工厂"的说法,应该使用什么工厂?
还有点担心如果用户在我的应用程序正在使用时删除SD卡会发生什么.
谢谢
这可能是一个愚蠢的问题,但我仍然需要知道它的确切答案.当我们为特定应用创建数据库并在真实设备上部署该应用时,系统创建的数据库在哪里?在内部存储或SD卡?如果它默认位于内部存储器上,我们是否可以将其转移到SD卡,因为应用程序可能会因内存不足和数据库大小增加而崩溃.我有一个带有9列表的数据库.存储数据库的正确位置在哪里?