未使用通知调用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