清理android中的活动

时间:2012-11-10 08:12:35

标签: android

我有四个活动a,b,c,d。活动a是主要活动,然后调用b,c和d,然后进行一些计算。我知道我可以通过这些活动中的android:noHistory="true"属性阻止活动在我的应用程序中累积。但问题是如果我在活动c,当我按下后退按钮我想去b,但如果d完成我想要删除b和c只显示一个。有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:1)

将此代码放入您的每项活动中,每次都稍微更改一下。这样你就可以覆盖后退按钮的正常功能

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)  {
        if (keyCode == KeyEvent.KEYCODE_BACK
                && event.getRepeatCount() == 0) {
            //start the desired activity
        }

        return super.onKeyDown(keyCode, event);
    }

此外,如果您只支持Android 2.0+,那么您可以使用此

@Override
public void onBackPressed() {
    // start your desired activity here
    return;
}

只需将其中任何一项放入您的每项活动中,然后开始正确的活动

要关闭一项特定活动,请查看此页面 - How to clear specific activity from the stack history?

答案 1 :(得分:0)

是的,可以通过确保在每个startActivity函数之后使用finish()函数来实现。除了要在最后显示的活动之外。

所以...这就是它的样子

A中的代码:

startActivity(Intent to start activity B); 

B中的代码:

startActivity(Intent to start activity C); 
Finish();

C代码:

startActivity(Intent to start activity D); 
Finish();

这将确保每当活动D完成时,活动C也将因完成而完成。由于此C也已完成,活动B中的Finish()将关闭B.由于活动A中没有Finish(),该活动将显示在屏幕上。

如果你想在D完成后才进入活动A,你必须使用startActivityForResult并处理结果并使用IF在B&amp ;;中有条件地执行Finish语句。 C.