1

[下方更新]

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

以下是应用程序结构:

  1. 对于正常的流程/工作,用户启动应用程序并且 Activity A 作为启动 Activity,它启动。用户可以从活动 A 导航到活动 B(即 A -> B)
  2. 单击 B 上的后退按钮时,将显示活动 A。

但是,问题在于从单击通知开始活动。下面是流程:

  1. 用户点击通知
  2. 活动 B 开始
  3. 单击活动 B 上的后退按钮时,它不会启动活动 A(这是可以理解的),但也不会终止活动 B(将活动 B 移动到后台)。我想要的是,如果活动 B 是通过单击通知启动的,那么在 B 上的后按应该将用户带到活动 A 或终止活动 B。

在这方面的任何指针将不胜感激。

[更新]:

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

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

谢谢史瑞

4

3 回答 3

2

中覆盖onBackPressed()

@Override
public void onBackPressed()
{
     finish();
     super.onBackPressed(); 
}

但是,如果他/她从最近的应用程序开始你的应用程序,用户可以直接进入活动 B。为避免这种情况,请在您ActivityB的清单中添加以下内容。如果您ActivityC从这里导航到,在 ActivityC 中按回将不会返回到 ActivtyB,因此请override onBackPressed()通过 重新启动 ActivityB Intent

    <activity
        android:name="ActivityB"
        android:clearTaskOnLaunch="true"
        android:excludeFromRecents="true"
        android:finishOnTaskLaunch="true"
        android:noHistory="true"/>
于 2014-01-03T07:51:03.343 回答
0

按照这个流程: -

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

2- 如果 isLaunchFrom 通知然后在活动 B 上导航。使用 startActivityFor 结果。

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

于 2014-01-03T08:35:45.890 回答
-1
@Override
public void onBackPressed() {
        Intent returnIntent = new Intent(B.this,A.class);
        B.this.finish();
        startActivity(returnIntent);

}

像这样试试

于 2014-01-03T07:52:20.397 回答