-1

我将从简单的 android 程序开始:

public class MyClass extends Activity
{ 
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main)
    }
}

我的问题是为什么我们不在 Java 中使用staticwith public void onCreate(Bundle savedInstanceState)like 也为什么它没有main函数?

4

2 回答 2

1

main 是桌面应用程序的 Java 约定,它围绕应用程序的历史概念构建,该应用程序从 A 点(main 的第一行)开始,到 B 点(从 main 的返回)然后停止。

Android 应用程序在一个非常不同的环境中运行。它非常受事件驱动。它拥有的不是 main,而是 Looper(事件循环的 android 版本)。您编写的代码是在事件发生时响应事件,而不是将命令行参数和文件转换为输出。

于 2013-08-01T22:21:06.467 回答
0

我不是专家,但这里有一个冗长的答案。或者答案。

答案 1:Android 可能使用实例方法,因为 Java 是为实例方法和字段设计的。我发现实例比静态效果更好。

那么,为什么传统的计算机程序有一个静态的“main()”呢?

回答 2:可能是因为当启动 JVM 时,没有任何实例,所以设计者认为最初调用的方法应该是静态的。

这给我们带来了您可能正在寻找的区别:为什么移动程序与传统程序不同?

答案 3:传统程序的生命周期比移动应用程序简单得多。传统程序启动、运行和退出。在 Java 中,JVM 随它一起启动和消亡。Android 应用的生命周期要复杂得多。JVM 可以在用户多次进入和退出应用程序时存活下来。一个活动非常轻量——将您的设备从横向旋转到纵向,活动被终止并开始一个新活动。有关活动生命周期的更多信息,请参阅http://developer.android.com/training/basics/activity-lifecycle/index.html

考虑一个网络服务器。这是一个长时间运行的过程,它为每个请求调用带有实例方法的应用层代码。我会说 Android 应用程序大约介于两种生命周期模型之间:传统程序和 Web 应用程序请求。

(我在这里做了一些笼统的陈述。准确地了解细节会发表更长的文章。)

于 2013-08-01T22:36:05.857 回答