android - 生命周期和 Activity 栈

标签 android android-activity android-ui android-notifications android-lifecycle

在应用程序中,Activity 是这样堆叠的:A -> B -> C -> D -> E。 如果我收到一个特定的通知并点击它,Activity E 就会启动。 如果我随后单击返回(手机上的按钮或操作栏上的按钮),应用程序将退出。

在这种情况下,如何转换到 Activity D,然后再通过 C、B 和 A 返回?

我的后退按钮代码:

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home:
        finish();
        break;
    }
    return true;
}

正常启动应用程序时一切正常。问题是 Activity 从通知开始。

最佳答案

Android 内置了您想要的功能,并且已经有详细的文档记录。首先,您应该查看 TaskStackBuilder类(class)。它在 JellyBean 中引入,但已包含在 the support library 中,然后使用它来构建一个合成的 TaskStack,这正是您所需要的。文档摘要如下:

When crossing from one task stack to another post-Android 3.0, the application should synthesize a back stack/history for the new task so that the user may navigate out of the new task and back to the Launcher by repeated presses of the back key. Back key presses should not navigate across task stacks.

TaskStackBuilder provides a way to obey the correct conventions around cross-task navigation.

如何构建它取决于应用程序中 Activity 的关系,但是 Tasks and Back Stack开发人员指南是一本很好的读物,可以帮助您做出决定,Navigating with Up and Back 也是如此。设计指南,如果这对您来说是全新的。

您会在 Implementing Effective Navigation 中找到一些代码示例类(class),也位于 Android 开发者网站的培训部分。

顺便说一句,ActionBar 上的按钮称为 Up。尽管它有时与后退按钮共享相同的功能,但两者并不相同(我认为这就是您正在谈论的那个 ;-) 。)

关于android - 生命周期和 Activity 栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11921273/

相关文章:

android - 是否可以在 MapActivity 中使用 Loaders 类?

android - 如何防止一个 fragment 被多次添加?

Android- 如何区分 Galaxy S-3 和 Galaxy S-4 布局?

android - 对 SEND 操作 Intent 的权限拒绝

Android - 使用 Eclipse 使用 Robotium 的 UI 自动化

Android 如何使用 X 按钮创建 fragment

android - finish() 的替代方法,用于从 View 中删除 Activity。

Android Activity 开关暂时失去全屏

java - android CardView 替代方案

android - Android 中的圆表类型 UI?