Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android中备份Sqlite对象_Android_Sqlite_Backup - Fatal编程技术网

在Android中备份Sqlite对象

在Android中备份Sqlite对象,android,sqlite,backup,Android,Sqlite,Backup,我即将为我的Android应用程序实现备份,我的问题是:数据驻留在sqlite数据库中。有些数据只是为了方便用户而存在,可以从其他来源重新创建。因此,为了最小化大小,我只希望导出相关数据(使用Google API的备份限制为1mb) 所有数据都有类等价物,它们通过我的SQLiteOpenHelper实现填充。这意味着我可以实现序列化 到目前为止,我可以看到以下选项: 使用Java Serializable进行序列化,并将所有对象写入一个二进制块并将其传递给writeEntityData() 使

我即将为我的Android应用程序实现备份,我的问题是:数据驻留在sqlite数据库中。有些数据只是为了方便用户而存在,可以从其他来源重新创建。因此,为了最小化大小,我只希望导出相关数据(使用Google API的备份限制为1mb)

所有数据都有类等价物,它们通过我的SQLiteOpenHelper实现填充。这意味着我可以实现序列化

到目前为止,我可以看到以下选项:

  • 使用Java Serializable进行序列化,并将所有对象写入一个二进制块并将其传递给writeEntityData()
  • 使用XML或JSON(可能与zip API一起)进行序列化,并将文件作为二进制块转储
  • 仅使用相关对象克隆数据库。可能要做很多工作
到目前为止,使用XML或JSON似乎是最好的选择,因为我可以重用XML或JSON来跨用户/设备共享数据。Java Serializable的规模似乎越来越大


我想听听你对此的看法

我建议您使用vacuum()缩小db大小,或者使用。 如果你的数据库很大,你可以试着压缩它。 删除所有不必要的lib(例如,如果不需要compat_v7)。 尝试用压缩图像。 尝试将wav或mp3转换为aac


而且。。。我们讨论的是多少Mb?

我看不出删除libs会对数据库产生什么影响?(最终未使用的lib将从发布版APK中剥离)初始数据库可能是7-800kb(目前),但可能会增长到2mb。对于用户添加的数据(正在备份),我们可以讨论1-200KB。如果我备份整个DB映像,真空绝对是一个选择,我不会这么做。不,我是说减小apk大小。也许你必须考虑更改表/字段结构。序列化将使数据库增长,所以。。。我认为你的数据库结构一定是最重要的一点。我们可以看到您的数据库结构和关系吗?APK大小与此无关,数据库的结构(尽可能好)与此无关。。。序列化与数据库的大小完全无关;序列化是关于传输/持久化对象的。我的问题是关于备份选定数据集的最佳实践。