首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android源代码怎么没有main方法仍然可以运行?

这是一个很好的问题,它涉及到Android应用程序的启动过程。Android应用程序的启动过程与传统Java应用程序有所不同,因为Android应用程序是基于组件的,而不是基于主函数的。

在Android应用程序中,每个组件都有一个自己的入口点,这个入口点是由AndroidManifest.xml文件中的声明定义的。例如,对于一个Activity,它的入口点是一个名为onCreate()的方法。这个方法会在Activity启动时被调用,但是它不是应用程序的主函数,因此不需要包含main()方法。

尽管Android应用程序没有main()方法,但是它们仍然可以运行。这是因为Android系统会自动为应用程序创建一个默认的入口点,这个入口点会调用应用程序的组件和相关的方法。这个默认的入口点是由Android系统自动生成的,因此开发人员不需要手动创建它。

总之,Android应用程序没有main()方法仍然可以运行,因为它们是基于组件的,而不是基于主函数的。Android系统会自动为应用程序创建一个默认的入口点,这个入口点会调用应用程序的组件和相关的方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

反插件化:你的应用不是一个插件(转)

Android插件化技术是应用程序级别的一项创新型技术,它的初衷主要是用于热更新,减少APK安装包的大小,以及解决65535方法数量的限制。从技术层面来说,Android插件化技术与传统意义上的动态加载还不一样,因为它在不需要声明任何特定的接口或组件的情况下,它就在可以加载或者启动整个应用程序(比如apk文件)。Android插件化技术的主要应用场景是,在同一个设备上启动多个应用的实例,也就是我们常说的"双开"。根据我们的观察,诞生Android插件化的的两个主要动机是:1是在社交APP中的多账户需求,2是在应用商店中即时启动应用程序。上面这两种应用场景均来自用户的需求。比如,一个用户既拥有Twitter的个人账户,也有一个拥有Twitter的企业账户,而又不想来回注销切换账户并重复登录,并且不想使用两个手机。Google Play中有一个很受欢迎的APP——"Parallel Space",就是采用的这项技术,它的安装量已经有5000万次。

02

Art of Android Development Reading Notes 9

(1)四大组件中只有BroadcastReceiver既可以在AndroidManifest文件中注册,也可以在代码中注册,其他三个组件都必须在AndroidManifest文件中注册;ContentProvider的调用不需要借助Intent,其他三个组件都需要借助Intent。 (2)Activity是一种展示型组件,用于向用户展示界面,可由显式或者隐式Intent来启动。 (3)Service是一种计算型组件,用于在后台执行计算任务。尽管service是用于后台执行计算的,但是它本身是运行在主线程中的,因此耗时的后台计算仍然需要在单独的线程中去完成。Service组件有两种状态:启动状态和绑定状态。当service处于绑定状态时,外界可以很方便的和service进行通信,而在启动状态中是不可与外界通信的。 (4)BroadcastReceiver是一种消息型组件,用于在不同的组件乃至不同的应用之间传递消息,它工作在系统内部。广播有两种注册方式:静态注册和动态注册。静态注册是在AndroidManifest中注册,在应用安装的时候会被系统解析,这种广播不需要应用启动就可以收到相应的广播。动态注册需要通过Context.registerReceiver()来注册,这种广播需要应用启动才能注册并接收广播。BroadcastReceiver组件一般来说不需要停止,它也没有停止的概念。 (5)ContentProvider是一种数据共享型组件,用于向其他组件乃至其他应用共享数据。ContentProvider中的insert、delete、update、query方法需要处理好线程同步,因为这几个方法是在Binder线程池中被调用的,另外ContentProvider组件也不需要手动停止。

02
领券