Android - Back按下从通知栏开始的活动

时间:2014-01-03 07:47:34

标签: android android-activity notifications launchmode

[更新如下]

我有多个活动的应用程序。我在处理从点击通知项目开始的活动时遇到问题。

以下是应用结构:

  1. 对于正常流程/工作,用户启动应用程序,活动A作为启动活动,它启动。用户可以从活动A(即A - > B)
  2. 导航到活动B.
  3. 单击B上的后退按钮,将显示活动A.
  4. 然而,问题在于通过点击通知启动活动。以下是流程:

    1. 用户点击通知
    2. 活动B已启动
    3. 单击活动B上的后退按钮,它不会启动活动A(这是理解的)但它也不会杀死活动B(将活动B移动到后台)。我想要的是,如果活动B是通过点击通知启动的,那么按B就应该将用户带到活动A或杀死活动B.
    4. 在这方面的任何指示将不胜感激。

      [UPDATE]:

      奇怪但是,这就是现在正在发生的事情。 1.重写活动B中的onBackPressed事件。 2.在此方法中,调用finish()。

      如果应用程序已在运行并且单击通知,则显示活动B,然后在按下时,活动B结束。但是,如果应用程序未运行,则通知单击将启动活动B,然后在按下时,它会调用backpress事件和finish()方法,但活动未完成并进入后台。这真的很奇怪。或者可能是我错过了一些细节:((

      由于 Shrey

3 个答案:

答案 0 :(得分:1)

覆盖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 :(得分:0)

遵循以下流程: -

1-在活动A的oncreate()中检查isLauchFrom。

2-如果isLaunchFrom Notification,则使用startActivityFor Result导航活动B.

希望这会对您有所帮助,如果有任何混淆发送评论。

答案 2 :(得分:-1)

@Override
public void onBackPressed() {
        Intent returnIntent = new Intent(B.this,A.class);
        B.this.finish();
        startActivity(returnIntent);

}

试试这个