在分布式应用程序的的apk嵌入一个数据库[Android]产品
-
26-09-2019 - |
题
我的问题是我觉得很简单,但我不认为答案是... 我有相当多的内容在我的应用程序,使其正常运行,我想将所有的在数据库中的,和在嵌入式数据库分发与应用程序市场。 唯一的问题是,我不知道该怎样做到这一点的想法。 我知道,我可以从Eclipse的DDMS提取文件.db的与我的数据库的内容,我想我需要把它放在我的应用程序的资源文件夹,但随后如何使应用程序中使用它来重新生成应用程序数据库? 如果您有任何链接到一些代码或帮助,那将是巨大的。 感谢
解决方案
出色地实现你的要求,你可以把.db文件在您的资产/目录下,并将其复制到地方你第一次启动您的应用程序......
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特别大,通常阻止人们在第一时间安装。
其他提示
您可以实现中间的路线的解决方案:使用上面的方法,但把它放在服务器的某个地方,而不是分发数据库文件。在我的经验中获取文件是只有10%的处理时间,休息的被解析和序列图像分贝
不隶属于 StackOverflow