¿Cómo compara Android las intenciones pendientes?

Documentación paraPendingIntent.FLAG_NO_CREATE lee:

Indicador que indica que si el PendingIntent descrito aún no existe, simplemente devuelva nulo en lugar de crearlo.

Mi pregunta:¿Qué criterios se utilizan para comparar PendingIntents?

Supongo que bajo el capó esta bandera usaPendingIntent.equals, pero no estoy realmente seguro de qué criterios está utilizando esa función. ¿Está usando la acción, requestCode, categorías, extras (supongo que no), etc.?

Contexto:

Quiero iniciar una alarma con una intención pendiente si mi alarma aún no está configurada. Específicamente, estoy siguiendo estoresponder.

Intent i = new Intent(applicationContext, MyService.class);
i.setAction("myAction");
PendingIntent pi = PendingIntent.getService(applicationContext, /*requestCode*/0, i, PendingIntent.FLAG_NO_CREATE);
if (pi != null) {
  AlarmManager alarmMgr = (AlarmManager)applicationContext.getSystemService(Context.AlarmService);
  alarmMgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, AlarmManager.INTERVAL_HOUR, AlarmManager.INTERVAL_HOUR, pi);
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta