Source: http://romain.raveaux.free.fr/document/Android/androidcours.pdf