Mobile devices have some special characteristics that must be taken into account when designing applications for such environments. For more information on devices, see also section Devices.
Battery
Applications must be designed to be as energy-efficient as possible due to the limited battery power of mobile devices. The mobile applications should therefore be designed to stop processes when idle and save CPU usage when possible.
Connections
Applications must be designed for environments with special connection characteristics. Applications can take advantage of wireless connections, which enable mobile computing. However, since connections can sometimes be delayed or dropped, care must be taken when using, for example, synchronous processes.
Execution of applications
Applications can be interrupted by, for example, an SMS or a phone call. These events cause the application to be moved to the background. For situations such as these, care must be taken to ensure that the application can recover from the situation smoothly.
Memory
Applications must be designed for environments that have less storage space and dynamic memory (runtime heap memory) than desktop environments, which means that more attention must be paid to memory-efficient data structures and reuse of code. Applications must also be robust, since users generally find using applications that crash easily very tedious to use, especially so because devices are usually always on.
Processing power
Applications must be designed for environments where CPUs might not be as powerful as the ones available in desktop environments.
Usability
Applications must be designed paying attention to usability issues since few bad experiences can make users cautious about using applications. This is also important since features such as small screen sizes greatly affect the usability of applications.
User interface
Applications must be designed for environments that have small screens and input methods that differ from those of the desktop environment, for example the 12-key numeric keypad, stylus, and soft keys. In addition, there are different kinds of devices, which means that attention must be paid to the various display sizes, different keyboards, and the different look and feel of devices. To be compatible across multiple language regions, mobile applications should rely on platform services provided by the UI toolkits. This way the internationalization features for Chinese text editors, for example, work automatically.