2014-06-20 150 views
0

這是一個出於好奇而不是實際問題的問題。一個可執行的獨立Java程序需要一個公共靜態void main(String [] args)方法。但在android中沒有這樣的方法。唯一最接近主要方法的是在清單中定義爲類別的android:name =「android.intent.category.LAUNCHER」。因此,我的問題是android是否需要一個主要方法?如果是,它是如何生成的,是它通過解析xml文件並創建類似於res文件夾的gen文件夾中的R.java引用??如果不是我的java文件的執行如何啓動。爲什麼沒有android應用程序需要主要方法

+1

@rgamber鏈接不回答我的問題 –

+0

@DerGolem主要方法是一個程序的單一切入點,所以我不認爲這是這種情況。 –

+0

@DerGolem每個應用程序都有一個main-程序啓動的初始入口點。有時它只是名稱不同,或者是運行時/框架的一部分。 –

回答

3

有一個main,但你沒有寫它。主要是Android框架的一部分,它將接受參數並將它們映射到一個Activity或Service來運行,然後調用正確的生命週期函數,所以你不必擔心它,想想onCreate活動(或onStart的服務)取代主。

+0

多數民衆贊成混淆部分*有一個主要*如果它是在框架,那麼它不是我的。此外您的評論以上*每個應用程序有一個主*是主要來自應用程序運行的達爾維克虛擬機。每個應用程序都會運行在它自己的虛擬機上,情況就是如此。我想成爲一名android教練,但我需要自己學習很多 –

+1

想想這樣 - 每個應用程序都有一個功能,將被首先調用。我們稱之爲「主要功能」。在標準的Java中,這是一個名爲main的函數。標準C++也一樣。在Windows的C++中,它是一個名爲WinMain的函數。一些舊的C++框架有一個叫TMain。這裏已經建立了一小段代碼,用於決定要啓動的活動,然後調用正確的生命週期函數。基本上,除了從學術的角度來看,你不需要擔心它 - 只是教授活動的生命週期。 –

0

The Java用於運行獨立Java程序的虛擬機需要main()才能開始執行。 Android使用目前使用Dalvik虛擬機,該虛擬機搜索Activity子類的實例。在Android 5中,他們切換到ART(Android Runtime)。正如你所提到的那樣,清單指定了LAUNCHER,它的值是這個子類,並在onCreate()中開始執行。

相關問題