Android上用于在整个应用程序会话中保持活动deathes / restarts之间的数据的最佳做法是什么?

时间:2010-01-09 10:32:22

标签: android session android-activity architecture

我们正在设计一个Android应用程序,其中包含几个以向导方式工作的活动 - 用户应该从活动#1转到活动#5以进入最终活动(#6)。

由于我们知道操作系统可以在低内存中突然终止活动,因此我们使用Application类作为静态存储来保存用户输入的数据“向导”活动和我们的应用程序在整个会话中需要的其他数据。

不幸的是我们发现这种方法失败了 - 看起来像Application类实例也可以被OS杀死(这是在Android 1.6和1.5上专门发现的)。我们对这种方法的期望是否错误(我们认为Application类实例总是适用于整个应用程序会话)?

所以问题是 - 在整个应用程序会话的活动deathes / restarts之间保持数据的Android最佳做法是什么?

2 个答案:

答案 0 :(得分:10)

  

我们正在设计一款Android应用   有几个活动   像向导一样工作 - 用户   应该从活动#1传递到   活动#5进入决赛   活动(#6)。

您确定要将它们作为单独的活动实施吗?为什么不使用ViewFlipper或其他东西在向导状态之间移动单个活动?

  

我们的期望是否错误   方法(我们认为应用类   实例总是为整体而存在   app session)?

Application类实例始终适用于整个应用程序会话AFAIK。但是,一旦您的所有活动都被销毁,应用程序也将被销毁。

  

所以问题是 - 什么是最好的   在Android上实践以保持数据   活动deathes / restarts之间   整个申请会议?

  1. 使用Service - 如果这被拉出RAM,只需从头开始
  2. 使用数据库
  3. 使用文件
  4. 或者,最好:在这种情况下不要使用多个活动。向导是一个逻辑的东西;如此对待并使其成为一项活动。通过onSaveInstanceState()保持您的州,并且您已设置。

答案 1 :(得分:0)

如果用户输入并且您需要存储的数据只是一组基元,您可以简单地使用SharedPreferences作为持久存储。