1. 程式人生 > >Android app啟動activity並調用onCreate()方法時都默默地幹了什麽?

Android app啟動activity並調用onCreate()方法時都默默地幹了什麽?

AR 其中 保存狀態 位置 mod con 會同 語句 Go

Android app啟動activity並調用onCreate() 方法時都默默地幹了什麽?

在AndroidManifest.xml文件中的<intent-filter>元素中有這麽兩句:


<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>


當寫好的應用發布到手機上之後,當雙擊”APP“應用的圖標時,系統會將這個點擊時間包裝成一個Intent,該Intent包含兩個參數,如上所述的兩個參數 被傳遞給應用之後,在應用的功能清單文件中尋找與該意圖匹配的意圖過濾器,如果匹配成功,找到相匹配的意圖過濾器所在的Activity元素,再根據

<activity>元素的”name“屬性來尋找其對應的Activity類。接著, Android操作系統創建該Activity類的實例對象,對象創建完成之後,會執行到該類的onCreate方法
此onCreate方法是重寫父類Activity的onCreate方法而實現的。onCreate方法用來初始化Activity實例對象。如下是helloWorld.java類中的onCreate方法的代碼:


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


其中super.onCreate(savedInstanceState)的作用是調用其父類Activity的onCreate方法來實現對界面的圖畫繪制工作。
在實現自己定義的Activity子類的onCreate方法時一定要記得調用該方法,以確保能夠繪制界面。


super.onCreate主要是加載一些組件。
第一件事情便是super.onCreate(savedInstanceState),其實這條語句放在子類中的onCreate方法中的任何位置都可,問題只是
super.onCreate(savedInstanceState)必須要被執行,所以,最好也就是放在第一行,看起來比較明確。


在TargetActivity中重寫了onCreate方法,而在Activity中的onCreate方法中已經對一些基本的基礎進行了操作,如果子類沒有super.onCraete方法的調用,會導致子類中的onCreate方法功能不全,從而出現錯誤。


在activity的生命周期中,只要離開了可見階段,或者說失去了焦點,activity就很可能被進程終止了!,被KILL掉了,,這時候,就需要有種機制,能保存當時的狀態,這就是savedInstanceState的作用。
當一個Activity在PAUSE時,被kill之前,它可以調用
onSaveInstanceState()來保存當前activity的狀態信息(在paused狀態時,要被KILLED的時候)。用來保存狀態信息的Bundle會同時傳給兩個method,即onRestoreInstanceState() and onCreate().




setContentView(R.layout.main)的作用是加載一個界面。該方法中傳入的參數是”R.layout.main“,其含義為R.java類中靜態內部類layout的靜態常量main的值,
而改值是一個指向res目錄下的layout子目錄下的main.xml文件的標識符。因此代表著顯示main.xml所定義的畫面。




參考文檔
http://www.android100.org/html/201406/10/23627.html

http://wenku.baidu.com/link?url=uXM2Tc7WljK5aiHTT9EqxK3XFlKByzBxdIjG1fcSw5blZJeRmAu5-gvHOWD8msSwKOWuD8OHhJ6iKlAUfULfQ18Od-UsabnHIaKy2ImCsy_

Android app啟動activity並調用onCreate()方法時都默默地幹了什麽?