0

我正在开发一个 android 应用程序,当用户进行市场更新时我需要保存数据。实际上在更新开始之前。我尝试使用 onDestroy() 但更新应用程序时不会调用它。你有什么想法?

问题是该应用程序定期保存数据。有时会发生这种情况,当您选择更新时,它会尝试在同一时间保存文件,导致数据损坏......这就是我试图检测更新事件的原因。

使用计划线程(例如 60 秒)以固定间隔保存文件。同样在文件中,我使用经典的 writeObject() 保存了一个序列化对象。这仅以 60 秒的固定速率发生,并且也在活动的 onPause 或服务的 onDestroy() 上发生。

但是,如果固定速率保存恰好在更新时发生(这会导致应用程序被破坏),则保存不完整并且对象会损坏,从而导致下次启动应用程序时从保存文件中获取无效对象。

4

2 回答 2

3

在 android上保存数据(来自 Android developerpers 文档)的一般方法是使用:

  • 共享偏好上的键值对
  • 将数据保存在文件中
  • 或使用 SQLite 数据库

即使在常规活动生命周期中,您也应该使用它们,我不明白为什么它们也不能解决您在更新之间的持久性需求。

为了避免损坏,如果您使用 SQL,请使用 SQLite Transaction,并在处理文件时检查此问题以了解损坏安全策略。

于 2013-01-31T09:42:52.200 回答
1

AFAIK 无法知道您的应用程序何时会更新(您不会收到与包相关的意图,因为在更新期间您的应用程序不再安装)。它将像往常一样简单地停止,所有广播接收器都未注册并更新。

但是,您可以做的是在您的应用程序中添加检查,以便在启动时检查它是否刚刚更新并执行您必须执行的任何操作。这非常简单,例如,只需将应用程序的当前版本(您可以通过 获取PackageManager)存储在共享首选项中,并在每次应用程序启动时根据当前版本检查存储的版本。

于 2013-01-31T09:43:47.917 回答