In this paper, we present an advance reservation scheme for CPU and energy resources, called ReCalendar. The goal is to enable soft real-time applications on mobile devices to achieve desired performance and lifetime. ReCalendar achieves this goal via two distinctive phases, calendaring and scheduling. In the calendaring phase, a calendar is used to arrange applications and to request CPU and energy reservations for calendared applications. In the scheduling phase, the resource manager enforces admitted reservations via CPU frequency/voltage adaptation and frequency-aware soft real-time scheduling. We have implemented the ReCalendar prototype and experimentally shown that, compared with previous approaches that support only immediate reservation or CPU advance reservation, ReCalendar achieves longer battery lifetime and higher overall system utility.