In recent years, there has been a rapid growth in the spread of smartphones and thus in the utilization of mobile applications. Such applications require a substantial portion of the available energy. Since a short battery lifetime has a very negative impact for the user experience, application developers should have the skills and the knowledge to avoid energy-inefficient applications. In this paper, we present a comprehensive survey of approaches and methods to reduce the energy consumption and thus help software developers to improve their applications.