按下后退按钮后,错误的活动恢复

时间:2017-11-23 23:27:32

标签: android android-activity

以下是我的活动行动简介: 活动A是一个启动器,它使用意图标志Intent.FLAG_ACTIVITY_NEW_TASK调用活动B. Intent.FLAG_ACTIVITY_CLEAR_TASK。 当活动A启动活动B时,在活动A中调用ondestroy,如预期的那样。 当我按下活动B中的后退按钮时,在活动B中调用ondestroy,它将我带到希望启动器。

此时没有活动,但应用程序仍然可见并且是任务管理器。当我点击它时,它会将我带到活动A(可能是因为它是清单中的MAIN动作)。

我试图获得的行为是,当我按下活动B中的后退按钮时,它会将我带到主屏幕,我可以返回,就好像它是根活动一样。

任何人都可以帮助我吗? 谢谢你!

2 个答案:

答案 0 :(得分:1)

如果单击活动B中的“后退”按钮,您将能够导航到主屏幕并从以下来源返回到根活动(A)。

为什么你使用了Intent.FLAG_ACTIVITY_CLEAR_TASK?

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ((Button)findViewById(R.id.btn_send)).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //Case 1. 
            //startActivity(new Intent(A.this, B.class).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
            //Case 2. 
            startActivity(new Intent(A.this, B.class).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP));
        }
    });
}

<强> FLAG_ACTIVITY_CLEAR_TASK

在API级别11中添加 int FLAG_ACTIVITY_CLEAR_TASK 如果在传递给Context.startActivity()的Intent中设置,则此标志将导致在活动开始之前清除与活动关联的任何现有任务。也就是说,活动成为否则为空任务的新根,并且任何旧活动都已完成。这只能与FLAG_ACTIVITY_NEW_TASK一起使用。

常数值:32768(0x00008000)

Google Developer

答案 1 :(得分:0)

你必须删除标志FLAG_ACTIVITY_CLEAR_TASK,因为作为android开发者网站here,行为将破坏你的活动A, 您需要删除该标志,然后您的活动将保留在堆栈中,您将能够返回活动A