如果活动位于前台,则活动不会从通知开始

时间:2014-03-20 23:43:56

标签: android

我有一个带有2个活动的应用程序,在序列中说A-> B和应用程序启动时由A启动的服务S.现在,在特定条件下,此服务会触发一个通知,该通知应该在我的应用程序中启动活动B,并且通常需要来自A或服务的B参数。

如果通知在A中或在应用程序外触发,则它会完美地启动B,但如果它在B中触发,则它不会使用新参数重新创建B.在这种情况下,onCreate方法不会运行。

任何想法我该如何解决?

1 个答案:

答案 0 :(得分:2)

您的活动可以在不重新创建的情况下接收意图。当您的B活动已经投放并收到意图时,它会跳过onCreate(Bundle)并转到onNewIntent(Intent)。有关详细信息,请参阅Activity#onNewIntent(Intent)

您要做的是在活动B中设置您的方法,如下所示:

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  handleNewIntent(getIntent());
}

@Override
protected void onNewIntent(Intent intent) {
  super.onNewIntent(intent);

  handleNewIntent(intent);
}

protected void handleNewIntent(Intent intent) {
  // TODO Put intent specific code here
}