我正在使用类似于Creating a simple notification的代码来创建和显示来自网络呼叫的通知。
问题在于我希望响应通知的活动能够完成业务,然后在后退按钮上单击,将之前处于活动状态的活动放回到前台,并使其后备堆完好无损。这与先前活动的活动是否是我的应用程序或其他人的一部分无关。
目前它遵循生成的TaskStackBuilder。引导它备份应用程序层次结构并进入主屏幕。这是糟糕的UI设计,因为它打破了使用该设备的任何人的工作流程,迫使他们手动返回他们的应用程序并花费比必要更多的按钮。这也是不直观的。
这也是在众多其他应用程序中实现它的常用方法,包括谷歌官方版本(谷歌播放更新通知),所以必须有一个相对标准的方法来实现这一点。
答案 0 :(得分:2)
Intent intent = new Intent(getApplicationContext(), MainActivity.class)
//add Intent.FLAG_ACTIVITY_CLEAR_TASK flag this will clear all activitys and
//launched activity at top. Means no other activity of this application will be running
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
or
// add Intent.FLAG_ACTIVITY_MULTIPLE_TASK which start one more task your applications
// where activity will not be cleared;
.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
Notification n = new Builder(context.getApplicationContext())
.setContentTitle("simple notification title")
.setContentText("simple message")
.setContentIntent(pendingIntent)
.setAutoCancel(true)
.addAction(R.drawable.ic_launcher, "And more",pendingIntent ).build();
NotificationManager notificationManager =(NotificationManager) context.getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, n);