我的申请中有三项活动:

Activity1 -> Activity2 -> Activity3

在activity3中,如果用户按下后退键,我希望返回activity2。在activity3的onpause事件中,我添加了一个finish()语句。这可能根本没有必要,但我想确保这项活动得到清理。这很管用。
但是,在activity3中,如果用户按Home键或启动一个新应用(通过通知栏或其他方式),我希望activity3和activity2都完成。如果用户返回此应用程序,他应该继续使用Activity1。
我已经想好了该怎么办,但如果可能的话,我不知道怎么处理这两个案子。我可以在Activity3中捕获“后退”按钮并向Activity2发送一条消息,告诉它不要finish()?不管您如何将活动发送到后台,它们似乎都遵循相同的生命周期流(暂停、停止)。
为了回答我为什么需要这种行为的问题,假设Activity1是一个登录屏幕,Activity2是一个选择屏幕,Activity3是一个内容屏幕。如果我从内容页按后退,我希望能够进行新的选择。如果我通过任何其他方式退出(主页、通知栏),我希望用户"logged out"
提前谢谢你的帮助。

最佳答案

我又一次回答了我自己的问题。我会把我的解决方案贴在这里,以防它帮助别人。
在activity2和activity3的onpause事件中,我添加了finish()。这将处理用户在这些活动中按Home键或响应通知栏事件的情况。由于这些活动都已完成,如果用户返回到应用程序,他们将获得activity1(现在位于堆栈的顶部)。
在activity3中,我为“back”键添加了一个onkeydown陷阱。由于activity2在暂停时被终止,我们必须从activity3中触发一个新的activity2。启动activity2后,activity3将结束。下面是activity3的onkeydown代码:

public boolean onKeyDown(int keyCode, KeyEvent event){
    if(keyCode == KeyEvent.KEYCODE_BACK) {
            Intent Act2Intent = new Intent(thisActivity, Activity2.class);
            startActivity(Act2Intent);
            finish();
            return true;
    }
    return false;
}

关于android - 如何控制 Activity 流程 - 后退按钮与主页按钮,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3623704/

10-09 01:24