Ответ 1
Что касается программы Android, то нет main(). Существует цикл UI, который запускается ОС, который вызывает вызовы методов, которые вы определяете или переопределяете в своей программе. Эти методы, вероятно, вызваны из/определены в onCreate(), onStart(), onResume(), onReStart(), onPause(), onStop() или onDestroy(). Все эти методы могут быть переопределены в вашей программе.
Основная проблема заключается в том, что ОС предназначена для работы в среде с ограниченными ресурсами. Ваша программа должна быть готова к остановке и даже полностью прекращена, когда ОС требуется больше памяти (это многозадачная ОС). Чтобы справиться с тем, что ваша программа должна иметь некоторые из перечисленных выше функций.
Жизненный цикл активности описывает это наилучшим образом (ваша программа - это одна или несколько Деяний, думайте о деятельности как экране):
http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle
Нижняя строка: ваша программа запускается на onCreate() через onResume(), но ОС запускает цикл. Ваша программа обеспечивает обратные вызовы ОС для обработки того, что посылает ОС. Если вы поместите длинный цикл в любую точку вашей программы, он будет зависеть, потому что ОС (в частности, поток пользовательского интерфейса) не может получить кусочек времени. Используйте поток для длинных циклов.