0

在此处输入图像描述

Activity1(未完成)可以启动Activity2,Activity2(未完成)可以启动Activity3。Activity2 和 3 可以使用

super.onBackPressed();
this.finish();

我想知道 Activity3 是如何直接回到 Activity1(不刷新)并释放 Activity2 的内存的?

4

5 回答 5

3
Intent intent = new Intent(Activity3.this, Activity1.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

这将使Activity1be 在 backstack 的顶部,杀死所有Activities在它上面的东西。希望这可以帮助。

于 2012-12-20T09:59:37.497 回答
0

试试这个

@Override
 public void onBackPressed() {
     startActivity(new Intent(this, UI.class)
     .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK));
 return;
}
于 2012-12-20T10:01:04.793 回答
0

尝试 super.finish(); 关闭第二个活动。

于 2012-12-20T10:05:07.480 回答
0

如果您想返回现有活动,则可以使用唯一 ID 和 onActivityResult 如果 resultData == ID --> 关闭第二个活动(对于用户来说,这似乎是从第三个活动返回到第一个活动)。

要了解有关活动堆栈的更多信息,请访问google 网站

也可能片段适合您 - 您可以简单地浏览片段堆栈。

于 2012-12-20T10:05:21.930 回答
0

活动二

Intent intent = new Intent(Activity2.this, Activity3.class);
startActivityforResult(intent,0);

从 Activity3 回来onBackPressed()时,需要时覆盖并设置结果

setResult(RESULT_CANCELED);

然后覆盖 Activity2 中的 onActivityResult()

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(requestCode == 0) {
            if(resultCode == RESULT_CANCELED)
                finish();
        }
    }

当设置结果时,这将完成第二个活动。否则,您可以像任何正常活动一样来回导航。

于 2012-12-20T10:08:02.707 回答