This paper investigates the energy-optimal uplink scheduling in mobile cloud systems. We establish a framework to optimize the energy consumption of the terminal using OFDM technology. We first consider the fixed overhead of RRC state promotion, then, we optimize the energy consumption in slow-start stage and normal transmission stage respectively. In normal data transmission stage, we consider both single-channel transmission scenario and multi-channel transmission scenario. In single-channel transmission scenario, we present an uplink scheduling algorithm which uses dynamic programming method to adjust the transmission rate in accordance with the fluctuating multi-states channel gain. In multi-channel transmission scenario, we propose four different algorithms respectively. Two algorithms of them allocate the transmission rate only among sub-channels and the other two allocate the transmission rate among both time slots and sub-channels. The numerical results show that when the average transmission rate is low, significant amount of energy can be saved by the presented algorithms. The results provide a method for mobile terminals to save energy, i.e., uploading applications to the cloud when data size is small or when the terminal is allocated with wide spectral bandwidth.