Android中的main()在哪里?

我是Android新手,正在研究框架,迫使我问这个问题。 由于我们在Android中扩展了Activity,所以在Activity有一个main地方,或者有一个Activity实现的包含main的隐藏类。

我到处看,却找不到它。 如果有人能给出一个清晰的想法,我将不胜感激。

Solutions Collecting From Web of "Android中的main()在哪里?"

Android使用Java语言,但使用修改的运行时模型执行。 正如其他人所说,每个包裹都有一个清单。 该清单中指定了启动点。 去Android站点,并做基本的教程。 这将帮助您了解创build/部署/运行stream程和基本应用生命周期。

在核心Java程序中,我们需要一个main()方法,因为在执行字节码时,JVM将在类中searchmain()方法并开始在那里执行。

在Android的情况下,Dalvik虚拟机的目的是find一个类,它是Activity一个子类,它被设置为一个LAUNCHER,从onCreate()方法开始执行应用程序,所以不需要main()方法。

有关更多信息,请参阅Activity的生命周期。

阅读此博客条目,了解Android应用程序的启动方式:

在Android系统启动期间,Linux内核首先调用进程“init”。 init读取文件“/init.rc”和“init.device.rc”。 “init.device.rc”是设备特定的,在虚拟设备上这个文件被称为“init.goldfish.rc”。

init.rc通过程序“/ system / bin / app_process”启动进程“Zygote”。 Zygote加载核心Java类并对它们进行初始化处理。 Android应用程序可以重用这些类,因此这一步使它们可以更快地启动。 一旦Zygote的初始工作完成,进程侦听套接字并等待请求。

如果你看ZyogoteInit类,你会发现主要的方法。

正如其他人所提到的,这个main()方法涉及到设置Android应用程序环境。 就开发人员而言,起点是Launcher活动的onCreate()方法。

 onCreate() Method....See lifecycle of android class (Activity)..... 

http://developer.android.com/reference/android/app/Activity.html

在Android中,操作系统使用Dalvik虚拟机。 执行应用程序的主要入口点被封装在框架中。 你可能想看看“ 什么是Android? ”

实际上,Android中的每个Activity都可以被认为是一个独立的应用程序,并且拥有自己的生命周期。

您可以在清单文件中告诉它在启动时运行哪一个。 没有main()函数,因为没有必要。 main()可能是用于“常规”java应用程序的约定,但不适用于浏览器applet之类的东西。 系统创build活动对象并调用其中的方法,该方法可能被称为main,也可能不被称为main。 在这种情况下,它不是。

onCreatemain()方法不同,从构造函数来看,它可以在单个活动上被调用两次,例如,如果进程被终止并且用户返回活动。 看到这个

许多您可能认为是Java“应用程序”的东西没有自己的main()方法。 例如,IIRC,servlet,WAR等没有main()方法 – 容器中的main()方法(如果有的话main()

实际上, main()方法是Android框架类android.app.ActivityThread 。 此方法为OS进程创buildMain(UI) Thread ,在其上设置Looper并启动事件循环。

Android框架负责创build和销毁操作系统进程,启动应用程序,启动活动,服务和其他组件。 ActivityManager是Android框架的一部分,它负责协调和pipe理不同的组件。

Android的体系结构与您可能从独立的Java应用程序中使用的体系结构有所不同。 最大的区别是,所有组件( ActivityServiceBroadcastReceiver等)不一定运行在相同的OS进程或同一个虚拟机(VM)中。 可以使单个应用程序中的组件运行在不同的操作系统进程中,并且还可以让来自不同应用程序的组件运行在相同的操作系统进程中。 在传统的Java中, main()方法是在创buildOS进程并且虚拟机完成其初始化之后由虚拟机调用的方法。