2016-03-04 67 views
1

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

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) 

它返回一个非空值。 现在的问题是它是一个返回非空值,因为我创造了一个用的PendingIntent或PendingIntent.FLAG_UPDATE_CURRENT是因为我曾呼吁manager.setInexactRepeated(...)

回答

1

据我所知,PendingIntent.FLAG_NO_CREATE将返回null只有在系统不发现的意图。

如果系统没有找到它,它不会因为你标记为“不创建”,系统将返回null创建一个。

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