Comportamento estranho do AlarmManager com notificaçoes

Olá, tenho um app que mostra notificaçoes ao usuario duas vezes ao dia, uma na parte da manha e outra na parte da tarde se as notificaçoes estiverem habilitadas nas configuraçoes. Os horarios em que as notificaçoes sao disparadas tambem sao opcionais Para isso eu uso o AlarmManager para disparar as notifixcaçoes na hora definida pelo usuario, como se fosse um despertador. Desde de que eu tornei os horarios opcionais, eu comecei a notar um comportamento estranho, atualmente eu tenho os seguintes problrmas:

  • Mesmo usando AlarmManager.RTC_WAKEUP no AlarmManager ele só notifica quando eu acendo a tela do celular.
    EX.: defini uma notificaçao para as 08:00, apos as 8 da manha se eu desbloquear a tela a notificaçao chega instantaneamente, se nao ele nunca vem.
    Antes ele notificava na hora certa idenpendete do celular estar em uso ou nao.

  • Apos setar um novo horario eu chamo o metodo turnOff e dps o TurnOn (código abaixo) pra abortar as notificaçoes
    atuais e recria-las no novo horario, porem n passam nem 2 minutos e ele notifica, isso na vdd acontece desde que eu implemenei a funcionalidade de notificaçoes com AlarmManager.

Aqui esta a classe responsavel por gerenciar as notificaçoes

 /**
  * Criado por  Gilian Marques em 11/12/2016.
  */

public class MyNotificationManager {

private Context mContext;

public MyNotificationManager(Context mContext) {
    this.mContext = mContext;
}

public void turnOnNotifications() {
    Calendar calendar = Calendar.getInstance();
    AlarmManager alarmManager = (AlarmManager) mContext.getSystemService(mContext.ALARM_SERVICE);
    Configuraçao conf = Configuraçao.getInstancia(mContext);
    //  crio a notificação da manha
    String[] spliterAm = conf.getValue(Key.NOT_HORARY_AM, Value.NOT_HORARY_DEFAULT_AM).split(":");  //obtem o horario das sharedPreferences
    calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(spliterAm[0]));  // seta o horario em uma Instancia de Calendar
    calendar.set(Calendar.MINUTE, Integer.parseInt(spliterAm[1]));
    calendar.set(Calendar.SECOND, 00);
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, PendingIntent.getBroadcast(mContext, 0, new Intent("CHECAR_DEBITOS_MANHA"), 0));
    //  crio a notificação da tarde da mesma forma que a da manha
    //  a diferença é que eu n crio outra instancia de calendar, uso a mesma porem setando um novo valor
    String[] spliterPm = conf.getValue(Key.NOT_HORARY_AM,Value.NOT_HORARY_DEFAULT_PM).split(":");
    calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(spliterPm[0]));
    calendar.set(Calendar.MINUTE, Integer.parseInt(spliterPm[1]));
    calendar.set(Calendar.SECOND, 00);
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, PendingIntent.getBroadcast(mContext, 0, new Intent("CHECAR_DEBITOS_TARDE"), 0));
    checkChanges();
}

/**
 * Desliga as notificaçoes
 */
public void turnOffNotifications() {
    AlarmManager alarmManager = (AlarmManager) mContext.getSystemService(mContext.ALARM_SERVICE);
    alarmManager.cancel(PendingIntent.getBroadcast(mContext, 0, new Intent("CHECAR_DEBITOS_TARDE"), 0));
    alarmManager.cancel(PendingIntent.getBroadcast(mContext, 0, new Intent("CHECAR_DEBITOS_MANHA"), 0));
    checkChanges();
}

/**
 * Checa o estado das notificaçoes
 * @return true se a notificaçoes estiverem ligadas
 */
public boolean checkChanges() {
    String nm = "MyNotificationManager ";
    boolean alarmeAtivoManha = (PendingIntent.getBroadcast(mContext, 0, new Intent("CHECAR_DEBITOS_MANHA"), PendingIntent.FLAG_NO_CREATE) == null);
    boolean alarmeAtivoTarde = (PendingIntent.getBroadcast(mContext, 0, new Intent("CHECAR_DEBITOS_TARDE"), PendingIntent.FLAG_NO_CREATE) == null);
    //  Toast.makeText(mContext, alarmeAtivoManha ? nm + "Alarme manha foi desativado" : nm + "Alarme manha foi ativado", Toast.LENGTH_SHORT).show();
    // Toast.makeText(mContext, alarmeAtivoTarde ? nm + "Alarme tarde foi desativado" : nm + "Alarme tarde foi ativado", Toast.LENGTH_SHORT).show();


    if (alarmeAtivoManha && alarmeAtivoTarde) {
        return true;
    } else {
        return false;
    }
}

}

Por favor me deem uma luz, por que mesmo usando RTC_WAKEUP o AlarmManager n dispara com o aparelho desligado ? e porque dispara apos setar as notificaçoes? tambem acito sugestoes caso conheçam uma forma melhor de realizar essa tarefa. Vale lembrar que a ideia é disparar as notificaçoes como se fosse um app de despertador, Sempre e apenas na hora exata. Obrigado a todos.