我一直在使用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吗?
答案 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
);