我应该如何从通知返回到活动没有新的意图

从Android开发,我通过示例代码实现了一个简单的通知,但在我的应用程序,我不想新的意图,再次创build活动,我只想回到我最后的活动(这是一个媒体播放器的用户界面)。 如果我使用示例代码,它将创build一个新的活动

Intent resultIntent = new Intent(this, ResultActivity.class); 

我评论有关新意图的相关代码,并得到了一个通知,但不知道如何回到我最后的活动…

回到我的应用程序,从长按主页键,然后触摸我的应用程序是可以的。 我想要的就是这样的行为。

bleow是Android开发的示例代码,我评论新的意图部分。

 NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.notification_icon) .setContentTitle("My notification") .setContentText("Hello World!"); /*Intent resultIntent = new Intent(this, ResultActivity.class); TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); stackBuilder.addParentStack(ResultActivity.class); stackBuilder.addNextIntent(resultIntent); PendingIntent resultPendingIntent = stackBuilder.getPendingIntent( 0, PendingIntent.FLAG_UPDATE_CURRENT ); mBuilder.setContentIntent(resultPendingIntent);*/ NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); mNotificationManager.notify(mId, mBuilder.build()); 

[UPDATE]

我以为我需要设置标志的意图和性质的活动。 因此,对于我想要回到我设置的活动

 android:launchMode="singleInstance" 

因为我不想要一个新的活动,我只想要我的最后一个活动,所以我补充说

 Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY 

从文档中我得到了使用Pendingintent.contentIntent它必须包括FLAG_ACTIVITY_NEW_TASK标志和当使用此标志,如果一个任务已经运行的活动,你现在开始,然后一个新的活动将不会开始; 相反,当前的任务将被简单地带到屏幕的最前面的状态,所以我也加上

 Intent.FLAG_ACTIVITY_NEW_TASK 

但从logCat,我仍然看到,当我触及通知返回到活动,pendingintent仍然调用onCreate()函数,而不是只显示最后一个仍然“活着”的活动。

Solutions Collecting From Web of "我应该如何从通知返回到活动没有新的意图"

如果你想从后台调用这个Activity,试试这个:

  Intent intent = new Intent(this, YourLauncherActivity.class); intent.setAction(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0); mBuilder.setContentIntent(pendingIntent); 

如果您在主屏幕上单击通知,则最后显示的应用程序的活动将在不启动的情况下进入前台。 如果该活动被系统杀死,您将获得一个新的活动。

SingleTop模式下,我没有明确定义根活动类,而是使用这个方法:

 Intent intent = new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_LAUNCHER) .setComponent(getPackageManager().getLaunchIntentForPackage(getPackageName()).getComponent()); 

并从通知中恢复最后的活动:

 builder.setContentIntent(PendingIntent.getActivity(context, 0, intent, 0)); 

或者这从一个服务恢复最后的活动:

 try { PendingIntent.getActivity(this, 0, intent, 0).send(); } catch (CanceledException e) { e.printStackTrace(); } 

我已经使用PendingIntent.getActivities而不是getActivity。 这在我的项目中运作良好。

 Intent backIntent = new Intent(this, HomeActivity.class); backIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Intent notificationIntent = new Intent(this, NextActivity.class); final PendingIntent pendingIntent = PendingIntent.getActivities(this, 1, new Intent[] {backIntent, notificationIntent}, PendingIntent.FLAG_ONE_SHOT);