【问题标题】:Backup Sqlite objects in Android在 Android 中备份 Sqlite 对象
【发布时间】:2015-02-05 19:28:15
【问题描述】:

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

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

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

  • 使用 Java Serializable 进行序列化,并将所有对象写入二进制块并传递给 writeEntityData()
  • 使用 XML 或 JSON 进行序列化,可能与 zip API 一起使用并将文件转储为二进制块
  • 仅使用相关对象克隆数据库。可能需要做很多工作。

到目前为止,使用 XML 或 JSON 似乎是最好的选择,因为我可以将其重用于跨用户/设备的数据共享。 Java Serializable 似乎膨胀了大小..

想听听您对此的看法!

【问题讨论】:

    标签: android sqlite backup


    【解决方案1】:

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

    还有……我们说的是多少 Mb?

    【讨论】:

    • 我看不到删除库对数据库有何影响? (最终未使用的库将从发布的 APK 中删除)初始数据库可能是 7-800kb(目前),但可能会增长到 2mb。至于用户添加的数据(正在备份的),我们可以说1-200 kb。如果我备份了整个数据库映像,那么 Vacuum 肯定是一个选项,我不会这样做。
    • 不,我说的是减少你的 apk 大小。
    • 也许你必须考虑改变你的表/字段结构。序列化将使您的数据库增长,所以...我认为您的数据库结构必须是最重要的一点。我们可以看看您的数据库结构和关系吗?
    • APK大小与此无关,与数据库的结构(尽可能好)无关......并且序列化与大小绝对无关数据库;序列化是关于传输/持久化对象。我的问题是关于备份选定数据集的最佳做法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多