Como o android compara intenções pendentes

Documentação paraPendingIntent.FLAG_NO_CREATE lê:

Sinalizador indicando que se o PendingIntent descrito ainda não existir, basta retornar nulo em vez de criá-lo.

Minha pergunta:Quais critérios são usados para comparar PendingIntents?

Eu estou supondo sob o capô esta bandeira usaPendingIntent.equals, mas não tenho muita certeza de quais critérios essa função está usando. Está usando a ação, requestCode, categorias, extras (acho que não), etc.?

Contexto:

Quero iniciar um alarme com uma intenção pendente, se o meu alarme ainda não estiver configurado. Especificamente, eu estou seguindo issoresponda.

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);
}

questionAnswers(2)

yourAnswerToTheQuestion