我已经在活动的生命周期中阅读了Android文档。但是,我很好奇应用程序中的不同活动的行为。
通过我已经完成的一些测试,通过意图在同一个应用程序中从活动A转换到活动B,通过onPause()
暂停活动A,并通过onCreate()
创建活动B. p>
奇怪的部分是活动B转换回活动A.
如果按下硬件后退键,则会为活动B触发onPause()
,并为活动A触发onResume()
。这就是我所期望的。
但是,如果按下ActionBar
上的后退按钮,则会为活动A触发onDestroy()
,然后onCreate()
和onResume()
。
为什么会这样?
答案 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的部分。