Android应用程序生命周期和后退按钮

mus*_*oom 0 android android-lifecycle

我已经阅读了有关活动生命周期的Android文档。但是,我对应用程序中不同活动的行为感到好奇。

从一些测试,我已经通过意图暂停活动的已完成,过渡从活动A到活动B在同一程序中通过onPause(),并创建活动B通过onCreate()

奇怪的是,当活动B过渡回活动A时。

如果按下了硬件后退键,onPause()则对活动B onResume()触发,对活动A触发。这就是我所期望的。

但是,如果按下上的后退按钮ActionBaronDestroy()则为活动A触发,然后按onCreate()onResume()

为什么会这样呢?

Lea*_*ros 5

上的“后退按钮” ActionBar称为“向上按钮”。这是“向上”按钮的预期行为,如果您看一下执行“向上”的代码的实现,您会看到重新创建了活动A。

Intent parentActivityIntent = new Intent(getApplicationContext(), MainActivity.class);
parentActivityIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(parentActivityIntent);
finish();
Run Code Online (Sandbox Code Playgroud)

您可以定义“向上”按钮应该执行的操作,但是,我建议坚持默认行为

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            // Your Code Here.
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)


为什么?

向上按钮(在此相反的后退按钮)应导航应用程序中的一个层次水平高,始终。后退按钮应该返回,即使它将退出当前应用程序。
您不能只在current上调用finish Activity,因为父级Activity可能已经被垃圾回收并且不再存在。

我强烈建议您阅读官方的Android设计指南,尤其是有关Up vs Back的部分。

  • @mushroom滚动位置可以使用onSaveInstanceState保存:) (2认同)