想象一下两个活动A和B.
创建一个待定意图并将其附加到允许返回新活动B的通知。设置标志FLAG_ACTIVITY_REORDER_TO_FRONT以便只拥有一个活动B(我们在步骤1中创建的活动)
我退出应用程序,打开通知栏,然后点击我的通知。我希望我回到步骤1中创建的活动B.嗯..它创建一个新的活动B,把它放在后台的顶部。什么!?我不明白这种行为!
现在关于这一点的更多细节可能很重要(我能检测到臭虫的味道吗?):
步骤1和2在活动A具有的片段中执行。
我使用支持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);
答案 0 :(得分:1)
Flag
设置notificationIntent
而非Intent
设置ActivityB
。改变这个
Intent i = new Intent(getActivity(), B.class);
getActivity().startActivity(i);
到
Intent i = new Intent(getActivity(), B.class);
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)
getActivity().startActivity(i);
Google I/O Navigation此链接非常有助于理解堆栈的工作原理