7

我们正在设计一个具有多个活动的 Android 应用程序,这些活动以类似向导的方式工作 - 用户应该从活动 #1 传递到活动 #5 以到达最终活动 (#6)。

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

不幸的是,我们发现这种方法失败了——看起来 Application 类实例也可以被操作系统杀死(这是在 Android 1.6 和 1.5 上特别发现的)。我们对这种方法的期望是否错误(我们认为 Application 类实例总是存在于整个应用程序会话中)?

所以问题是 - 在 Android 上,在整个应用程序会话的活动死亡/重新启动之间保持数据的最佳实践是什么?

4

2 回答 2

10

我们正在设计一个具有多个活动的 Android 应用程序,这些活动以类似向导的方式工作 - 用户应该从活动 #1 传递到活动 #5 以到达最终活动 (#6)。

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

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

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

所以问题是 - 在 Android 上,在整个应用程序会话的活动死亡/重新启动之间保留数据的最佳实践是什么?

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

或者,最好:在这种情况下不要使用多个活动。巫师是一个单一的逻辑事物。像这样对待它并使其成为一个单一的活动。通过 坚持你的状态onSaveInstanceState(),你就准备好了。

于 2010-01-09T13:11:53.730 回答
0

如果用户输入并且您需要存储的数据只是一组原语,您可以简单地将SharedPreferences其用作持久存储。

于 2010-01-09T11:32:53.587 回答