0

我有一个显示不同屏幕的活动 A。我选择在同一个活动中显示多个视图,使用setContentView.

当您启动应用程序时,活动 A 会显示默认屏幕。然后,您选择一个选项,活动通过将 setContentView 设置为另一个视图来显示另一组选项。现在,当您单击此新视图时,它会将您带到一个新活动(活动 B),并且活动 A 调用finish()

如果我现在结束活动 B,通过调用finish()它,我将被带回活动 A,它称之为onCreate(). 我无法弄清楚这里出了什么问题。当 Activity B 从未调用 Activity A 的意图时,为什么 Activity 会重新创建自己?

view.findViewById(R.id.quit).setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        finish();
    }
});
4

1 回答 1

0

这个问题很可能是因为 Activity 的目的onCreate()是创建 Activity 离开时的状态。在任何情况下,您都不能假设Activity用户离开后 an 将保持其状态。视图是内存密集型的,系统会在当前顶部 Activity 需要更多内存时立即转储它。如果发生这种情况,则系统必须Activity在系统转储它之前将其重新创建为其原始状态。

您可以通过该onSaveInstanceState(Bundle)方法保存状态。传入的onCreate包与​​您设置的包相同onSaveInstanceState(),因此所有参数都将在那里。然后您可以按原样重建。

于 2014-02-20T22:10:38.400 回答