Maybe this can clear it up a bit: http://blog.blundell-apps.com/notification-for-a-user-chosen-time/
Если вы хотите получить уведомление за день до данных todo, вы просто минус 1 день с даты.
1) Установите будильник
getSystemService(Context.ALARM_SERVICE).set(AlarmManager.RTC, date.getTimeInMillis(), pendingIntent);
2) Catch Alarm
3) Показать уведомление
//This is the 'title' of the notification
CharSequence title = "Alarm!!";
//This is the icon to use on the notification
int icon = R.drawable.ic_dialog_alert;
//This is the scrolling text of the notification
CharSequence text = "Your notification time is upon us.";
//What time to show on the notification
long time = System.currentTimeMillis();
Notification notification = new Notification(icon, text, time);
//The PendingIntent to launch our activity if the user selects this notification
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(this, SecondActivity.class), 0);
//Set the info for the views that show in the notification panel.
notification.setLatestEventInfo(this, title, text, contentIntent);
//Clear the notification when it is pressed
notification.flags |= Notification.FLAG_AUTO_CANCEL;
//Send the notification to the system.
mNM.notify(NOTIFICATION, notification);
Полный исходный код