[更新如下]
我有多个活动的申请。我在处理从单击通知项开始的活动时遇到问题。
以下是应用程序结构:
- 对于正常的流程/工作,用户启动应用程序,活动A作为启动活动,它启动。用户可以从活动A导航到活动B(即A->B)
- 单击B上的后退按钮,将显示活动A
但是,问题在于从单击通知开始活动。以下是流程:
- 用户点击通知
- 活动B已启动
- 单击活动B上的后退按钮时,它不会启动活动A(这是可以理解的),但也不会终止活动B(将活动B移动到后台)。我想要的是,如果活动B是通过点击通知启动的,那么反按B应该会将用户带到活动A或终止活动B
请提供这方面的任何建议。
[更新]:
奇怪的是,这就是现在发生的事情。1.覆盖活动B中的onBackPressed事件。2.在这个方法中,finish()被调用。
如果应用程序已经在运行,并且单击通知时,将显示活动B,然后按下后,活动B结束。但是,如果应用程序没有运行,则单击通知会启动活动B,在按下后,它会调用backpress事件和finish()方法,但活动没有完成,而是进入后台。这真的很奇怪。或者可能是我遗漏了一些细节:(
谢谢Shrey
在onBackPressed()
中覆盖。
@Override
public void onBackPressed()
{
finish();
super.onBackPressed();
}
但是,如果用户从最近的应用程序中启动你的应用程序,他/她可以直接进入活动B。为了避免这种情况,请将以下内容添加到清单中的ActivityB
中。如果您从这里导航到ActivityC
,在ActivityC中按返回键将不会返回到ActivtyB,因此override onBackPressed()
并通过Intent
重新启动ActivityB。
<activity
android:name="ActivityB"
android:clearTaskOnLaunch="true"
android:excludeFromRecents="true"
android:finishOnTaskLaunch="true"
android:noHistory="true"/>
遵循以下流程:-
1-在活动A的oncreate()中检查isLaunchFrom。
2-如果是LaunchFrom Notification,则使用startActivityFor Result在"活动B"上导航。
希望这将帮助你,如果有任何困惑发送评论。
@Override
public void onBackPressed() {
Intent returnIntent = new Intent(B.this,A.class);
B.this.finish();
startActivity(returnIntent);
}
试试这个