我的问题是我觉得很简单,但我认为答案不会...... 我在我的应用程序中有很多内容可以使它正常运行,我正在考虑将所有内容放在一个数据库中,然后将它分发到一个嵌入式数据库中市场。 唯一的麻烦是我不知道该怎么做。 我知道我可以从Eclipse DDMS中提取文件.db和我的数据库的内容,我想我需要将它放在我的应用程序的资产文件夹中,但是如何让应用程序使用它来重新生成应用程序数据库? 如果你有任何代码或帮助的链接,这将是伟大的。 感谢
答案 0 :(得分:13)
为了实现您的要求,您可以将.db文件放在您的assets /目录中,并在第一次启动应用程序时将其复制到位.......
final String DB_DESTINATION = "/data/data/YOUR_PACKAGE_NAME/databases/MyDatabaseFile.db";
// Check if the database exists before copying
boolean initialiseDatabase = (new File(DB_DESTINATION)).exists();
if (initialiseDatabase == false) {
// Open the .db file in your assets directory
InputStream is = getContext().getAssets().open("MyDatabaseFile.db");
// Copy the database into the destination
OutputStream os = new FileOutputStream(DB_DESTINATION);
byte[] buffer = new byte[1024];
int length;
while ((length = is.read(buffer)) > 0){
os.write(buffer, 0, length);
}
os.flush();
os.close();
is.close();
}
其中“initialiseDatabase”是指示应用程序是否第一次启动的标志。
虽然,如果您正在考虑存储大量数据,如您所述:我强烈建议您避免使用它膨胀APK文件,并使用Internet连接下载数据库记录(从托管服务器)应用已经推出。这样,您可以显示一个进度条,向用户显示他们为什么要等待很长时间才能开始使用该应用程序。使APK特别大通常会阻止人们首先安装它。
答案 1 :(得分:1)
您可以实施中间路线解决方案:使用上述方法,但不是分发db文件将其放在服务器的某个地方。根据我的经验,获取文件只占处理时间的10%,其余部分是解析和序列化图像到db