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

Vit*_*nko 7 architecture session android android-activity

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

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

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

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

Com*_*are 10

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

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

我们对这种方法的期望是否错误(我们认为Application类实例总是适用于整个应用程序会话)?

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

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

  1. 使用Service- 如果这被踢出RAM,只需从头开始
  2. 使用数据库
  3. 使用文件

或者,最好:在这种情况下不要使用多个活动.向导是一个逻辑的东西; 如此对待并使其成为一项活动.坚持你的状态onSaveInstanceState(),你就定了.

  • 我真的很喜欢这个答案.将其作为一个活动实现可能更干净,但是您必须考虑诸如"后退"按钮之类的情况,默认情况下不会将您带到上一个"屏幕".是的,假设您的进程(以及其中的框架对象,如Application)可以随时终止.使用服务可能有所帮助,但这可能只是简单地延迟了不可避免的事情.此常见问题解答可能很有用:http://developer.android.com/guide/appendix/faq/framework.html#3 (2认同)