想象两个活动 A 和 B。
- A 启动一个活动 B(将在 backstack 的顶部)
创建一个待处理的意图并将其附加到允许返回到新活动 B 的通知。设置标志 FLAG_ACTIVITY_REORDER_TO_FRONT 是为了只有一个活动 B(我们在步骤 1 中创建的那个)
我退出应用程序,打开通知栏,然后单击通知。我希望我回到第 1 步中创建的活动 B。嗯.. 它创建了一个新的活动 B,将其放在后台堆栈的顶部。什么!?我不明白这种行为!
现在有关此的更多细节可能很重要(我是否检测到错误气味?):
步骤 1 和 2 在活动 A 具有的 Fragment 中执行。
我使用支持 v4 库,活动是 SherlockFragmentActivity 的扩展实现 ActionBar.TabListener
这是代码片段:
//Activity B creates and showed
Intent i = new Intent(getActivity(), B.class);
getActivity().startActivity(i);
Intent notificationIntent = new Intent(getActivity(), Prova2.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
notificationIntent.putExtra("test", "hi I'm a test");
PendingIntent contentIntent = PendingIntent.getActivity(getActivity(), 0, notificationIntent, 0);
String n = MyApplication.getAppContext().NOTIFICATION_SERVICE;
NotificationManager nm= (NotificationManager) getActivity().getSystemService(n);
Notification notification = new Notification(R.drawable.icon, "test", System.currentTimeMillis());
notification.setLatestEventInfo(MyApplication.getAppContext(), "testtitle", "texttest",
contentIntent);
notification.defaults = Notification.DEFAULT_SOUND;
notification.flags = Notification.FLAG_AUTO_CANCEL;
nm.notify(1, notification);