0

Android 文档指出“您的应用程序中的一个活动可能会被实例化多次”。现在让我们假设:

  • 我使用 onStart() 将状态保存在永久存储中
  • 我使用 onStop() 从永久存储中加载状态

现在让我们假设我有 2 个主要活动实例(inst1 和 inst2),并且我有以下调用序列:

  1. inst1.onStart()
  2. inst2.onStart()
  3. inst1.onStop()
  4. inst2.onStop()
  5. inst1.onStart()

那么,这意味着实例#1 最终会加载实例#2 的状态。

这是一种可能的情况吗?如果是,如何避免这种情况?

编辑:实际上,看起来这种情况是不可能的,因为您不可能同时在“运行”状态下拥有相同活动的 2 个实例。

4

1 回答 1

2

如果“永久存储”是指共享首选项或文件,那么可以。否则,如果您正在使用onSaveInstanceState,则不会。正如方法名称所说,它是一个实例机制。从文档

“调用以在被杀死之前从活动中检索每个实例的状态,以便可以在 onCreate(Bundle) 或 onRestoreInstanceState(Bundle) 中恢复状态(此方法填充的 Bundle 将传递给两者)
。...
默认实现负责处理每个实例状态的大部分 UI ”

于 2012-11-27T10:49:05.340 回答