На самом деле, этот тип паттерна не свойственен Android, но происходит всякий раз, когда у вас есть какой-то фреймворк в середине. Некоторыми основными примерами являются Java-апплеты и сервлеты. Некоторые ответы уже дают правильный ответ, но я попытаюсь немного уточнить.
Когда вы запускаете приложение Java, вы запускаете JVM, а затем вам нужно что-то загрузить в него: вам нужен статический метод (основной), потому что в JVM нет объектов (пока), на которые вы можете ссылаться к.
Если у вас есть какая-то платформа в середине, это среда, которая запустит JVM и начнет заполнять ее собственными объектами службы: написание кода затем означает написание ваших собственных объектов (которые будут подклассами заданного "шаблон"). Затем ваши объекты могут быть введены (загружены) фреймворком. Объекты службы инфраструктуры управляют жизненным циклом внедренных объектов, вызывая методы жизненного цикла, определенные в суперклассе «template».
Так, например, когда вы предоставляете апплет для браузера, вы не запускаете статический метод main: вы скорее предоставляете только подкласс java.applet.Applet, который реализует некоторые методы экземпляра, которые действуют как обратный вызов для управления жизненным циклом ( init, рисуй, останавливайся ...). Это браузер, который запускает JVM, создает экземпляр того, что необходимо для запуска апплета, загружает ваш апплет и вызывает его.
Аналогично, с сервлетами вы создаете подкласс класса javax.servlet.http.HttpServlet и реализуете некоторые экземпляры (не статические) методы (doGet, doPost ...). Веб-контейнер (например, Tomcat) будет отвечать за запуск JVM, создание экземпляра того, что необходимо для запуска сервлета, загрузку вашего сервлета и вызов его.
Шаблон в Android почти такой же: что вы делаете, это создаете подкласс android.app.Activity. Когда вы запускаете приложение, система просматривает манифест, чтобы выяснить, какое действие должно быть запущено, затем «каркас» загружает его и вызывает методы его экземпляра (onCreate, onPause, onResume ...).