没有使用Notification调用Android onCreate()

时间:2014-08-28 08:38:21

标签: android android-intent

我遇到了有趣的工作流程处理。 我创建了这样的通知:

    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()内处理有关意图的信息。

如果我点击应用程序外的通知,一切顺利。活动正确处理此意图并显示我的预期。

但是,当我点击我的应用内部的通知时,我的MainActivity.class没有新的情况而且onCreate()没有被解雇。我认为它将创建MainActivity.class

的新实例

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

测试我的应用后,我找到了。

a)MainActivity - >获取通知 - >关闭应用 - >打开应用程序(MainActivity) - >新闻通知 - >通知按预期打开MainActivity的新实例。

b)MainActivity - >获取通知 - >新闻通知 - >什么都没发生

1 个答案:

答案 0 :(得分:1)

所以我正在研究有一天修复那个错误,在这里我发现了什么。 我肯定相信Android任务系统可以让你头疼。 如果Android决定您从non-Activity context调用您的意图,那么似乎就是这样 它可以用新的Intent替换。

startActivity called from non-Activity context; forcing Intent.FLAG_ACTIVITY_NEW_TASK

intent将替换您原来的intent,并且您不会捕获您插入的任何数据。

您可以执行下一步以防止出现这种情况。在您的活动中,您应该Override下一个方法:

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

现在你可以处理这些数据了