0

我有一个片段,可以在他们的 onSaveInstanceState 方法中保存用户数据。当用户完成活动并在下一个意图中显示它时,我需要获取此数据。目前我的实施顺序是:

  1. 用户点击关闭按钮
  2. 计算开始依赖存储在 onSaveInstanceState 的 prev 调用中的数据,然后开始新的意图
  3. 当前片段的onSaveInstanceState被调用,计算中缺少信息
  4. 新的活动显示
  5. 旧 Activity onDestroy 被称为

我考虑开始计算和 onDestroy 中的新活动。然后我需要一种机制来销毁当前的Activity。或者我可以在进行计算之前以某种方式调用当前线程中所有剩余的 onSaveInstanceState 方法调用。什么会更好或有更好的方法?

4

1 回答 1

0

对于我来说,这对我来说听起来像是一个奇怪的设计。对于这个用例,我会这样做:

  1. 用户按下任意按钮(在您的情况下关闭)
  2. 单击侦听器获取所需的数据(与在 onSaveInstanceState 中获取它们的方式相同)
  3. 如果操作冗长,则启动 asynctask 并显示进度条,如果微不足道,则在 UI 线程上进行计算
  4. 从新活动的计算结果开始意图

我有一个片段,可以在他们的 onSaveInstanceState 方法中保存用户数据。当用户完成活动并在下一个意图中显示它时,我需要获取此数据。

您是否有任何理由需要特别来自 onSaveInstanceState() 方法的数据?

考虑开始我的计算和 onDestroy 中的新活动。然后我需要一种机制来销毁当前的Activity。

如果您在 onDestroy() 中调用某些内容,则无需强制销毁该活动,因为它已经在进行中。(顺便说一句。finish() 会这样做)。除此之外,onDestroy 应该清理程序,例如释放资源或关闭流,而不是调用新活动

于 2013-06-30T21:05:22.777 回答