Activity的啟動(dòng)模式分為四種:
1. Standard模式:默認(rèn)啟動(dòng)模式,這種模式下,Activity可以有多個(gè)實(shí)例,每次啟動(dòng)Activity,不管任務(wù)棧中是否已經(jīng)有該Activity的實(shí)例,系統(tǒng)都會(huì)創(chuàng)建一個(gè)新的Activity實(shí)例。
2. SingleTop模式:如果啟動(dòng)Activity時(shí),該Activity正位于棧頂,則不會(huì)創(chuàng)建新的Activity實(shí)例,否則,仍會(huì)創(chuàng)建新的實(shí)例。
3. SingleTask模式:同一個(gè)任務(wù)棧只能有一個(gè)Activity實(shí)例。
4. SingleInstance模式:整個(gè)系統(tǒng)只能有一個(gè)Activity實(shí)例,啟動(dòng)一個(gè)singleInstance Activity時(shí),系統(tǒng)會(huì)創(chuàng)建一個(gè)新的任務(wù)棧,并且該任務(wù)棧只有它一個(gè)Activity。
onNewIntent的觸發(fā)時(shí)機(jī):
當(dāng)啟動(dòng)模式為SingleTop時(shí),Activity實(shí)例當(dāng)前在棧頂時(shí),此時(shí)會(huì)調(diào)用onNewIntent方法,調(diào)用順序?yàn)椋簅nCreate—>onStart—>onResume—>onPause—>onNewIntent—>onResume。
當(dāng)啟動(dòng)模式為SingleInstance和singleTask時(shí),若Activity已在任務(wù)棧時(shí),就會(huì)調(diào)用onNewIntent方法,調(diào)用順序?yàn)椋簅nPause—>onNewIntent—>onRestart—>onStart—>onResume。
所以,只有SingleTop(位于棧頂),SingleTask和SingleInstance(且棧中已存在實(shí)例),再次啟動(dòng)它們時(shí)才會(huì)調(diào)用,僅從后臺(tái)切換到前臺(tái)而不再次啟動(dòng)的情況下不會(huì)觸發(fā)onNewIntent。
