Source: https://my.uopeople.edu/pluginfile.php/57436/mod_book/chapter/38898/CS4405.Murphy.Guide.Android.Dev.pdf