我想了解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(...)
?
答案 0 :(得分:1)
据我所知,PendingIntent.FLAG_NO_CREATE
只有在系统找不到意图时才会返回null。
如果系统找不到它,它将不会创建一个,因为你标记为"不要创建"并且系统将返回null。
如果您已经先创建了一个意图并将其传递给警报管理器,系统将返回一个非空值,直到该警报到期或取消该警报为止。