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

时间:2014-05-12 17:48:00

标签: android android-lifecycle

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

通过我已经完成的一些测试,通过意图在同一个应用程序中从活动A转换到活动B,通过onPause()暂停活动A,并通过onCreate()创建活动B. p>

奇怪的部分是活动B转换回活动A.

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

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

为什么会这样?

1 个答案:

答案 0 :(得分:5)

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

Intent parentActivityIntent = new Intent(getApplicationContext(), MainActivity.class);
parentActivityIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(parentActivityIntent);
finish();

你可以定义“向上”按钮应该做什么,但是,我建议坚持默认行为

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


<强>为什么吗

Up 按钮(与后退按钮相反)应在应用程序层次结构中向上导航一级,始终。后退按钮应返回< / em>,即使它将离开当前的应用程序。
你不能只在当前的Activity上调用完成,因为父Activity已经被垃圾收集并且不再存在了。

我强烈建议阅读官方Android Design Guidelines,特别是关于Up vs Back的部分。