前言
Android應(yīng)用就是一個(gè)個(gè)的Activity組成的死陆,那么了解Activity的啟動(dòng)模式就是不能避免的了洒敏,并且通過合理的設(shè)置Activity的啟動(dòng)模式會(huì)節(jié)省系統(tǒng)開銷和程序運(yùn)行效率。
如何設(shè)置Activity的啟動(dòng)模式
在AndroidManifest文件中找到需要設(shè)置的Activity饼疙,添加launchMode,如下就是將MainActivity的啟動(dòng)模式設(shè)置為了standard。
< activity android:name=".MainActivity" android:launchMode="standard" />
啟動(dòng)模式介紹
Activity有四種啟動(dòng)模式涝缝,下面就開始一一介紹下
1. standard
模式啟動(dòng)模式扑庞,每次激活A(yù)ctivity時(shí)都會(huì)創(chuàng)建Activity,并放入任務(wù)棧中拒逮。(默認(rèn)不設(shè)置的話是standard模式罐氨。)
2. singleTop
如果在任務(wù)的棧頂正好存在該Activity的實(shí)例, 就重用該實(shí)例滩援,否者就會(huì)創(chuàng)建新的實(shí)例并放入棧頂(即使棧中已經(jīng)存在該Activity實(shí)例栅隐,只要不在棧頂,都會(huì)創(chuàng)建實(shí)例)玩徊。
3. singleTask
如果在棧中已經(jīng)有該Activity的實(shí)例租悄,就重用該實(shí)例(會(huì)調(diào)用實(shí)例的onNewIntent())。重用時(shí)恩袱,如果棧中存在該實(shí)例恰矩,則將在它上面的實(shí)例移除棧使用該實(shí)例。如果棧中不存在該實(shí)例憎蛤,將會(huì)創(chuàng)建新的實(shí)例放入棧中外傅。
4. singleInstance
在一個(gè)新棧中創(chuàng)建該Activity實(shí)例,并讓多個(gè)應(yīng)用共享改棧中的該Activity實(shí)例俩檬。一旦該模式的Activity的實(shí)例存在于某個(gè)棧中萎胰,任何應(yīng)用再激活改Activity時(shí)都會(huì)重用該棧中的實(shí)例,其效果相當(dāng)于多個(gè)應(yīng)用程序共享一個(gè)應(yīng)用棚辽,不管誰激活該Activity都會(huì)進(jìn)入同一個(gè)應(yīng)用中技竟。(該模式貌似在開放中使用的情況不多,有使用過的可以分享下經(jīng)驗(yàn))