以下是我的活动行动简介: 活动A是一个启动器,它使用意图标志Intent.FLAG_ACTIVITY_NEW_TASK调用活动B. Intent.FLAG_ACTIVITY_CLEAR_TASK。 当活动A启动活动B时,在活动A中调用ondestroy,如预期的那样。 当我按下活动B中的后退按钮时,在活动B中调用ondestroy,它将我带到希望启动器。
此时没有活动,但应用程序仍然可见并且是任务管理器。当我点击它时,它会将我带到活动A(可能是因为它是清单中的MAIN动作)。
我试图获得的行为是,当我按下活动B中的后退按钮时,它会将我带到主屏幕,我可以返回,就好像它是根活动一样。
任何人都可以帮助我吗? 谢谢你!
答案 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)
答案 1 :(得分:0)
你必须删除标志FLAG_ACTIVITY_CLEAR_TASK,因为作为android开发者网站here,行为将破坏你的活动A, 您需要删除该标志,然后您的活动将保留在堆栈中,您将能够返回活动A