未使用通知调用Android onCreate()

未使用通知调用Android onCreate(),android,android-intent,Android,Android Intent,我遇到了一个有趣的工作流处理意图。 我创建如下通知: NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context) .setSmallIcon(R.drawable.abc_textfield_search_default_holo_dark).setContentTitle("Мероприятие изменилось") .setContentText(ev

我遇到了一个有趣的工作流处理意图。 我创建如下通知:

    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
        .setSmallIcon(R.drawable.abc_textfield_search_default_holo_dark).setContentTitle("Мероприятие изменилось")
        .setContentText(eventToShow.valueAt(i).name + " " + eventToShow.valueAt(i).date).setAutoCancel(true);
    Intent resultIntent = new Intent(context, MainActivity.class);
    resultIntent.putExtra(MainActivity.NOTIFICATION_EVENT_DISPLAY, eventToShow.valueAt(i).id);
    PendingIntent resultPendingIntent = PendingIntent.getActivity(context,0,resultIntent,PendingIntent.FLAG_UPDATE_CURRENT);
    mBuilder.setContentIntent(resultPendingIntent);
    NotificationManager mNotifyMgr = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    mNotifyMgr.notify(eventToShow.valueAt(i).id, mBuilder.build());
当用户收到通知时,我希望当他单击它时,MainActivity.class将处理这个意图。 我在
MainActivity.onCreate()中处理有关意图的信息

如果我在应用程序外单击通知,一切都会正常进行。活动正确处理此意图并显示我的预期

但是,当我在应用程序中单击通知时,我的
main活动没有新实例。class
onCreate()
没有启动。我认为它将被创建为
MainActivity.class的新实例

你能解释一下这是一种默认行为吗?我该如何处理这种情况

在测试我的应用程序后,我发现下一个

a) MainActivity->get notification->Close app->Open app(MainActivity)->按notification->notification按预期打开MainActivity的新实例


b) MainActivity->get notification->press notification->什么都没发生

所以我研究了大约一天来修复这个bug,这里是我发现的。 我肯定安卓任务系统会让你头疼。 看起来,如果Android决定您是从
非活动上下文调用您的意图
它可以以新的意图重放

startActivity从非活动上下文调用;强制意图。标记活动新任务

这个
intent
将取代您原来的
intent
,您将无法捕获插入其中的任何数据

你可以做下一步来防止这种情况。在您的活动中,您应该覆盖下一个方法:

@Override
public void onNewIntent(Intent intent) {
int eventId = intent.getIntExtra(MainActivity.NOTIFICATION_EVENT_DISPLAY, -1); 
}

现在,您可以处理此数据

尝试在PendingIntent中使用其他标志,可能是PendingIntent.flag\u CANCEL\u CURRENT,也可以在intent intent.flag\u ACTIVITY\u NEW\u TASK中设置标志。这应该在创建时触发。你能在
onResume()
中用
getIntent()
获得
intent
吗?@BobanS。尝试了这两种方法,但是
活动。onCreate()
未启动。@BobanS。由于某种原因,当我调用
inteventid=getIntent().getIntExtra(通知事件显示,-1)从onResume返回给我
-1
。当我期望得到我之前投入的价值时。你检查过你投入的意图吗?可能
eventToShow.valueAt(i).id
is-1