AlarmManager funciona bien en emulador pero no en dispositivo real

Este es mi código para configurar la alarma:

public void SetAlarm(Context context, int tag, long time){
     AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
     Intent i = new Intent(context, Alarm.class);
     i.putExtra("position", tag);
     PendingIntent pi = PendingIntent.getBroadcast(context, tag, i, PendingIntent.FLAG_CANCEL_CURRENT);
     am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+ time, pi); // Millisec * Second * Minute
}

este es mi metodo onRecieve:

public void onReceive(final Context context, Intent intent){   
    PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
    PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "my wak up lo");
    wl.acquire();

    position = intent.getIntExtra("position", -1);         
    new PostManager(context, position);

    wl.release();
}

Esto está funcionando bien con el emulador. al mismo tiempo, programé una alarma que se activará después de 24 horas en el emulador y en el dispositivo real. el trabajo lo realiza el emulador bien, pero no en un dispositivo real. esto está sucediendo paraPowerManager.FULL_WAKE_LOCK ¿O algo más? He intentado mucho pero no he encontrado ninguna solución.

Respuestas a la pregunta(1)

Su respuesta a la pregunta