【问题标题】:Persisting state to files in onPause() takes too long在 onPause() 中将状态持久化到文件需要太长时间
【发布时间】:2017-03-21 10:08:10
【问题描述】:

考虑以下情况。我有一个应用程序,它包含大量保存在文件中的数据。为此,我在 onPause 方法中生成了一个 AsyncTask。

问题是它需要很长时间。可能是用户关闭活动然后再次启动它,但是,在再次创建活动之前文件没有完全保存到磁盘。因此,在下次启动时,活动包含不正确的数据。我该如何处理这个问题,即确保在下次启动之前将数据完全保存到磁盘?

【问题讨论】:

  • 您在这些文件中保存了什么?为什么不使用数据库?
  • 我用的是gson,这很有用,因为文件稍后会导出。在数据库的情况下,是不是同样的问题(可能需要太长时间)?

标签: java android asynchronous android-asynctask persistence


【解决方案1】:

您只需检查您的数据是否已存储。显然,自定义标志、“触摸”文件等。 让你的 UI 逻辑更容易避免这个问题。

【讨论】:

  • 假设我使用了一个被触摸的文件,我如何确保对可能出现的问题的恢复能力,例如:我的应用程序在保存文件时被终止,权限有问题,我不能触摸文件等?换句话说,我如何区分我正在等待文件被触摸的情况和发生错误的情况?另外,当我打开应用程序并且我还在等待文件被触摸时该怎么办?显示进度条并检查一些固定的时间间隔?
  • 在我的实践中,我使用前台服务和 start_sticky 标志
  • @AlexSee,我的意思是在我的代码中,大量工作不是在活动内部执行,而是在服务中执行
猜你喜欢
  • 2016-06-09
  • 2011-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-09
  • 1970-01-01
  • 2010-12-10
相关资源
最近更新 更多