【发布时间】:2014-08-29 16:08:51
【问题描述】:
我遇到了有趣的意图工作流处理。 我创建一个这样的通知:
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() 中处理有关意图的信息。
如果我点击应用外的通知,一切都会正常。 Activity 正确处理了这个意图并显示了我的预期。
但是当我在我的应用程序中点击通知时,我的MainActivity.class 没有新的实例并且onCreate() 没有触发。我以为它会创建MainActivity.class的新实例
你能解释一下这是默认行为吗?我应该如何处理这种情况?
测试我的应用后,我找到了下一个。
a) MainActivity -> 获取通知 -> 关闭应用 -> 打开应用(MainActivity) -> 按下通知 -> 通知按预期打开 MainActivity 的新实例。
b) MainActivity -> 获取通知 -> 按下通知 -> 没有发生任何事情
【问题讨论】:
-
尝试在未决意图中使用其他标志,可能是 PendingIntent.FLAG_CANCEL_CURRENT 或者您可以在意图 Intent.FLAG_ACTIVITY_NEW_TASK 中设置标志。这应该在创建时触发。
-
你能在
onResume()和getIntent()中得到那个intent吗? -
@BobanS。尝试了这两个想法,但
Activity.onCreate()没有触发。 -
@BobanS。出于某种原因,当我从 onResume 调用
int eventId = getIntent().getIntExtra(NOTIFICATION_EVENT_DISPLAY, -1);时,它会返回给我-1。当我期望获得我之前投入的价值时。 -
你检查过你的意图吗?也许
eventToShow.valueAt(i).id是-1