实际上,这种类型的模式并不是Android独有的,而是每当你在中间有一些框架时就会发生。一些基本的例子是java Applets和Servlets。已经提供的一些答案给出了正确的回答,但我将尝试详细说明一下。
当您启动一个Java应用程序时,您将启动一个JVM,然后您需要将一些内容加载到其中:因此您需要一个静态方法( main),因为在JVM中还没有您可以引用的对象。
如果你在中间有某种框架,它就是启动JVM并开始用它自己的服务对象填充它的框架:写你的代码就意味着写你自己的对象(这将是给定“模板”的子类)。然后,框架可以注入(加载)您的对象。框架服务对象通过调用“模板”超类中定义的生命周期方法来管理注入对象的生命周期。
例如,当您向浏览器提供一个applet时,您并没有启动一个静态的main方法:您只提供了一个java.applet.Applet的子类,它实现了一些实例方法,这些方法作为回调来管理生命周期(init、paint、stop...)。浏览器将启动JVM,实例化启动applet所需的内容,加载applet并调用它。
类似地,使用servlet,您可以子类化javax.servlet.http.HttpServlet类并实现一些实例(非静态)方法(doGet、doPost...)。Web容器(例如Tomcat)将负责启动JVM,实例化启动servlet所需的内容,加载并调用servlet。
Android中的模式几乎相同:您要做的是创建android.app.Activity的子类。当你启动一个应用程序时,系统会在清单中查找应该启动哪个活动,然后“框架”加载它并调用它的实例方法(onCreate、onPause、onResume...)。