我是Android的新手,正在研究框架,它迫使我提出这个问题.由于我们在Android中扩展Activity,因此必须在main某处Activity或者有一个隐藏类来Activity实现包含它main.
我到处看,但找不到它.如果有人能够就此提出一个明确的想法,我将不胜感激.
Cha*_*har 65
在核心Java程序中,我们需要一个main()方法,因为在执行字节代码时,JVM将main()在类中搜索该方法并在那里开始执行.
在Android的情况下,Dalvik虚拟机被设计为查找一个类,该类是其子类,Activity并且被设置为LAUNCHER以从其onCreate()方法开始执行应用程序,因此不需要main()方法.
有关更多信息,请参阅生命周期Activity.
Dav*_*ser 19
实际上,该main()方法是Android框架类android.app.ActivityThread.此方法Thread为OS进程创建Main(UI),在其Looper上设置并启动事件循环.
Android框架负责创建和销毁操作系统进程,启动应用程序,启动活动,服务和其他组件.的ActivityManager是Android框架的一部分,它负责协调和管理不同的组件.
Android的体系结构与您在独立Java应用程序中使用的体系结构略有不同.最大的区别是,所有组件(的Activity,Service,BroadcastReceiver等)不相同的OS过程中或在同一个虚拟机(VM)一定运行.可以使来自单个应用程序的组件在不同的OS进程中运行,并且也可以使来自不同应用程序的组件在相同的OS进程中运行.在传统Java中,该main()方法是在创建OS进程并且虚拟机完成其初始化之后由虚拟机调用的方法.
小智 16
Android使用java语言,但使用修改后的运行时模型执行.正如其他人所说,每个包中都有一个清单.此清单中指定了启动点.转到android站点并执行基本教程.这将使您了解创建/部署/运行过程和基本的应用程序生命周期.
阅读此博客条目以了解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应用程序环境.就开发人员而言,起点是onCreate()Launcher活动的方法.