PendingIntent.FLAG_NO_CREATE的PendingIntent

时间:2016-03-04 11:00:35

标签: android alarmmanager android-pendingintent

我想了解PendingIntent.FLAG_NO_CREATE的行为。我想知道它什么时候会返回null以及什么时候会赢。 这是发生事件的顺序:

alarmIntent = new Intent(context, AlarmReceiver.class)
pendingIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT);
manager.setInexactRepeating(AlarmManager.RTC_WAKEUP,
                            calendar.getTimeInMillis(),
                            AlarmManager.INTERVAL_DAY, pendingIntent);

现在,当我跑:

PendingIntent.getBroadcast(context, 0, alarmIntent, PendingIntent.FLAG_NO_CREATE)

它返回一个非null值。 现在我的问题是它返回一个非null值,因为我创建了一个带有PendingIntent.FLAG_UPDATE_CURRENT的pendingIntent,还是因为我调用了manager.setInexactRepeated(...)

1 个答案:

答案 0 :(得分:1)

据我所知,PendingIntent.FLAG_NO_CREATE只有在系统找不到意图时才会返回null。

如果系统找不到它,它将不会创建一个,因为你标记为"不要创建"并且系统将返回null。

如果您已经先创建了一个意图并将其传递给警报管理器,系统将返回一个非空值,直到该警报到期或取消该警报为止。