Android通知意图会破坏活动

时间:2013-12-23 22:26:34

标签: android android-intent android-notifications android-notification-bar

我正在尝试在我的应用中使用通知,但使用以下代码时出现问题:

NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
        .setSmallIcon(R.drawable.notification)
        .setContentTitle("title")
        .setContentText("message");
        builder.setOngoing(true);
        Intent resultIntent = new Intent(this,StartActivity.class);
        TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
        stackBuilder.addParentStack(StartActivity.class);
        stackBuilder.addNextIntent(resultIntent);
        PendingIntent resultPendingIntent =
        stackBuilder.getPendingIntent(
            0,
            PendingIntent.FLAG_UPDATE_CURRENT
        );
        builder.setContentIntent(resultPendingIntent);
        notificationManager.notify(1, builder.build());

当我返回主屏幕并单击状态栏中的通知时,StartActivity将被销毁并再次创建。但是,我只想让Activity再次显示,就像点击启动器图标一样。我怎么能改变它?

问候

2 个答案:

答案 0 :(得分:0)

尝试添加

resultIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);

在创建PendingIntent

之前

来源:

How to make notification intent resume rather than making a new intent?

答案 1 :(得分:0)

以下为我工作:

NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
        .setSmallIcon(R.drawable.notification)
        .setContentTitle("title")
        .setContentText("message");
        builder.setOngoing(true);
        Intent resultIntent = new Intent(this,NotificationActivity.class);///!!!!
        resultIntent.addCategory(Intent.CATEGORY_LAUNCHER);
        PendingIntent resultPendingIntent = PendingIntent.getActivity(this, 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
        builder.setContentIntent(resultPendingIntent);
        notificationManager.notify(1, builder.build());

NotificationActivity 是特殊类,它会立即在onCreate()中完成,并将应用程序的任务带到前台。资料来源:Notification to restore a task rather than a specific activity?