2013-08-01 45 views
-1
的靜態和主要意義

我將開始與Android的簡單程序:android的

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

我的問題是我們爲什麼不使用staticpublic void onCreate(Bundle savedInstanceState)像Java也爲什麼在沒有main功能它?

+0

,因爲它是Android的代碼。如果你需要真正的洞察力,你將不得不問問原來的Android概念。 – 2013-08-01 22:08:25

+1

Android會啓動您的活動來處理需要它的Intent。這個過程就是實例化Activity。在尚未創建的Activity對象上調用onCreate()是沒有意義的。 –

回答

1

main是一個桌面應用程序的Java約定,它是圍繞應用程序的歷史概念構建的,該應用程序從A點開始(主線的第一行)並轉到B點(從main返回),然後停止。

Android應用程序運行在非常不同的環境中。這是非常多的事件驅動。而不是主要的,它有什麼是Looper(事件循環的Android版本)你編寫的代碼是在事件發生時響應,而不是將命令行參數和文件轉換爲輸出。

0

我不是專家,但這裏有一個長期的答案。或答案。

答案1:很可能,Android使用實例方法,因爲Java是爲實例方法和字段而設計的。我發現事情比靜態更好。

那麼,爲什麼傳統計算機程序有一個靜態的「main()」?

答案2:可能是因爲當一個JVM啓動時,沒有任何事件的實例,所以設計者認爲最初調用的方法應該是靜態的。

這給我們帶來了你可能尋找的區別:爲什麼移動程序與傳統程序不同?

答案3:傳統程序的生命週期比移動應用程序簡單得多。傳統的程序啓動,運行和退出。在Java中,JVM開始並隨着它而死。 Android應用程序的生命週期非常複雜。 JVM可以在用戶進入和退出應用程序多次之後倖免於難。而且一項活動非常輕便 - 將您的設備從橫向旋轉到縱向,並且活動被殺死並開始新的活動。有關活動生命週期的更多信息,請參見http://developer.android.com/training/basics/activity-lifecycle/index.html

考慮一個網絡服務器。這是一個長時間運行的過程,它爲每個請求調用帶有實例方法的應用程序層代碼。我想說一個Android應用程序大約是兩種生命週期模型的一半:傳統程序和Web應用程序請求。

(我在這裏做了一些籠統的陳述。作爲準確的有關細節會作出一個甚至更長的時間後)。