Android的啟動模式分為四種: standard模式啟動模式,每次啟用Activity時都會建立Activity,並放入任務棧中。 singleTop如果在任務的棧頂正好存在該Activity的執行個體, 就重用該執行個體,否者就會建立新的執行個體並放入棧頂(即使棧中已經存在該Activity執行個體,只要不在棧頂,都會建立執行個體)。 singleTask如果在棧中已經有該Activity的執行個體,就重用該執行個體(會調用執行個體的onNewIntent())。重用時,會讓該執行個體回到棧頂,因此在它上面的執行個體將會被移除棧。如果棧中不存在該執行個體,將會建立新的執行個體放入棧中。 singleInstance在一個新棧中建立該Activity執行個體,並讓多個應用共用改棧中的該Activity執行個體。一旦改模式的Activity的執行個體存在於某個棧中,任何應用再啟用改Activity時都會重用該棧中的執行個體,其效果相當於多個應用程式共用一個應用,不管誰啟用該Activity都會進入同一個應用中。 standard standard是系統預設的啟動模式,每次建立都是在堆上放一個新的Activity。 這裡就不多介紹了。 singleTop 每次使用新的Activity時會自動檢測棧頂的當前Activity是否是需要引用的Activity,如果是則直接引用此Activity,而不會建立新的Activity。 <activity android:name=".Activity2" android:label="singleTop" android:launchMode="singleTop" > </activity>其效果是最頂層是singleTop的話,再點擊singleTop按鈕不會建立新的Activity。 image singleTask 此啟動模式和singleTop在名字上即可看出區別,即singleTop每次只檢測當前棧頂的Activity是否是我們需要請求建立的,而singleTask則會檢測棧中全部的Activity對象,從上向下,如果檢測到是我們所請求的則會消滅此Activity對象上面的對象,直接把檢測到的我們需要的Activity置為棧頂。 <activity android:name=".Activity4" android:launchMode="singleTask" android:label="singleTask" > </activity其效果是點擊singleTask之後點擊多個standard,再點singleTask,那些standard都沒了。 image singleInstance 此啟動模式和我們使用的瀏覽器工作原理類似,我們都知道在多個程式中訪問瀏覽器時,如果當前瀏覽器沒有開啟,則開啟瀏覽器,否則會在當前開啟的瀏覽器中訪問。此模式會節省大量的系統資源,因為他能保證要請求的Activity對象在當前的棧中只存在一個。