代码之家  ›  专栏  ›  技术社区  ›  Vit Khudenko

在Android上,在整个应用程序会话的活动停止/重新启动之间保存数据的最佳实践是什么?

  •  7
  • Vit Khudenko  · 技术社区  · 14 年前

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

    由于我们知道在内存不足的情况下,操作系统会突然终止某个活动,因此我们将应用程序类用作静态存储,用于保存用户在“向导”活动中输入的数据以及应用程序在整个会话中需要的其他数据。

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

    所以问题是——在Android上,在整个应用程序会话的活动停止/重启之间保存数据的最佳实践是什么?

    2 回复  |  直到 12 年前
        1
  •  10
  •   CommonsWare    14 年前

    我们正在设计一个Android应用程序, 有几个活动是 以类似向导的方式工作-用户 应该从活动1传递到 活动5进入决赛 活性(α6)。

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

    我们对这个的期望是错误的吗 方法(我们认为应用程序类 实例总是为整体而存在 应用程序会话?

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

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

    1. 使用A Service --如果这个被踢出了内存,就从头开始。
    2. 使用数据库
    3. 使用文件

    或者,最好:在这种情况下不要使用多个活动。向导是一个单一的逻辑事物;将其视为一个单一的活动。通过保持你的状态 onSaveInstanceState() 你已经准备好了。

        2
  •  0
  •   Lucifer    12 年前

    如果用户输入的数据和您需要存储的数据只是一组原语,那么您可以简单地使用 SharedPreferences 作为永久存储。