我将从android的简单程序开始:
public class MyClass extends Activity
{
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main)
}
}
我的问题是为什么我们不在Java中使用static
和public void onCreate(Bundle savedInstanceState)
一样,为什么没有main
函数呢?
答案 0 :(得分:1)
main是桌面应用程序的Java约定,它围绕应用程序的历史概念构建,该应用程序从A点(主要的第一行)开始,然后转到B点(从main返回)然后停止。
Android应用程序在非常不同的环境中运行。这是非常多的事件驱动。它不是主要的,而是一个Looper(事件循环的android版本)。你编写的代码在事件发生时响应事件,而不是将命令行参数和文件转换为输出。
答案 1 :(得分:0)
我不是专家,但这里有一个很长的答案。或者答案。
答案1:Android可能使用实例方法,因为Java是针对实例方法和字段而设计的。我认为实例比静态更好。
那么,为什么传统的计算机程序有一个静态的“main()”?
答案2:可能是因为当JVM被启动时,没有任何实例,所以设计者认为最初调用的方法应该是静态的。
这让我们看到了你可能正在寻找的区别:为什么移动计划与传统计划不同?
答案3:传统程序的生命周期比移动应用程序简单得多。传统程序启动,运行和退出。在Java中,JVM以它开始并消亡。 Android应用程序的生命周期要复杂得多。 JVM可以在用户多次进入和退出应用程序后继续存在。并且活动非常轻量级 - 将您的设备从横向旋转到纵向,并且活动被杀死并且新的活动开始。有关活动生命周期的更多信息,请参阅http://developer.android.com/training/basics/activity-lifecycle/index.html。
考虑一个网络服务器。这是一个长时间运行的进程,它使用每个请求的实例方法调用应用程序层代码。我会说Android应用程序大约介于两个生命周期模型之间:传统程序和Web应用程序请求。
(我在这里做了一些全面的陈述。准确了解细节会发布更长的帖子。)