即使没有人调用它,Activity也会重新创建

时间:2013-06-04 16:27:55

标签: android android-intent android-activity

我有一个显示不同屏幕的活动A.我选择使用setContentView在同一活动中显示多个观看次数。

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

如果我现在结束活动B,通过在其上调用finish(),我将被收回活动A,并将其称为onCreate()。我无法弄清楚这里有什么问题。当活动B从未调用活动A的意图时,为什么活动会重新创建?

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

1 个答案:

答案 0 :(得分:0)

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

您可以通过onSaveInstanceState(Bundle)方法保存状态。传入onCreate的捆绑包与您在onSaveInstanceState()中设置的捆绑包相同,因此所有参数都在那里。然后你可以像现在一样重建。