我遇到了有趣的工作流程处理。 我创建了这样的通知:
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 - >获取通知 - >新闻通知 - >什么都没发生
答案 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);
}
现在你可以处理这些数据了