是否有必要在通知的PendingIntent中使用FLAG_ACTIVITY_NEW_TASK?

时间:2012-08-17 06:50:34

标签: android android-pendingintent

我一直在使用Notification s,昨天我注意到PendingIntent的文档说传递给PendingIntent.getActivity()方法的Intent必须有{{} 1}}设置:

  

请注意,活动将在a的上下文之外启动   现有活动,因此您必须使用Intent.FLAG_ACTIVITY_NEW_TASK   在意图中启动标志。

但是,在使用FLAG_ACTIVITY_NEW_TASK时我从未设置此标志,但到目前为止我没有遇到任何问题。我已经看到了Notification的几个示例,其中Notification没有为FLAG_ACTIVITY_NEW_TASK引用的Intent设置PendingIntent。特别是,official guide会显示以下代码段:

Context context = getApplicationContext();
CharSequence contentTitle = "My notification";
CharSequence contentText = "Hello World!";
Intent notificationIntent = new Intent(this, MyClass.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);

notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);

正如您所看到的,他们没有设置FLAG_ACTIVITY_NEW_TASK标志。所以我的问题是,我应该在使用FLAG_ACTIVITY_NEW_TASK时始终设置PendingIntent.getActivity()标志,还是在某些情况下可以省略它?特别是,当使用Notification时,我可以在不设置此标志的情况下使用Intent吗?

2 个答案:

答案 0 :(得分:1)

我相信系统会为您设置通知。从通知启动时,您将获得一项新任务。

答案 1 :(得分:0)

是的,您应该使用FLAG_ACTIVITY_NEW_TASK。否则,您可能会在某些设备上出现意外行为。

截至今天(2017年3月25日),official guide linked in the question有更新的代码段:

// Creates an Intent for the Activity
Intent notifyIntent =
        new Intent(this, ResultActivity.class);
// Sets the Activity to start in a new, empty task
notifyIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                        | Intent.FLAG_ACTIVITY_CLEAR_TASK);
// Creates the PendingIntent
PendingIntent notifyPendingIntent =
        PendingIntent.getActivity(
        this,
        0,
        notifyIntent,
        PendingIntent.FLAG_UPDATE_CURRENT
);