我想在资产文件夹中使用大型数据库发布我的应用程序。Android SQLiteAssetHelper似乎是解决这个问题的方法。
但是,该应用程序也使用 ormlite,并且它有许多映射到数据库表的 Java 对象。如何让 ormlite 使用预填充的数据库?
我想在资产文件夹中使用大型数据库发布我的应用程序。Android SQLiteAssetHelper似乎是解决这个问题的方法。
但是,该应用程序也使用 ormlite,并且它有许多映射到数据库表的 Java 对象。如何让 ormlite 使用预填充的数据库?
我创建了我自己的扩展 OrmLiteSqliteOpenHelper 的 SqliteOpenHelper,然后在里面我复制了 SQLiteAssetHelper 中的代码。
您可以摆脱 SQLiteAssetHelper 并实现此DatabaseInitializer 类,它将您的数据库(如果它不存在)复制到data/data/yourapp/databases/yourdb.db
(ormlite 生成数据库的文件夹)
在您的 DatabaseHelper 构造函数中:
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
DatabaseInitializer initializer = new DatabaseInitializer(context);
try {
initializer.createDatabase();
initializer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
干净简单的解决方案
一些小缺点:
- 仅适用于 Android 2.2.3+
- 注意大小(3mb 没有遇到任何问题)