一鍵啟動(dòng)有幾種模式 android中的activity的啟動(dòng)方式有哪幾種?
android中的activity的啟動(dòng)方式有哪幾種?Activity啟動(dòng)模式有4種,分別為standard、singleTop、singleTask、singleInstance。1.standar
android中的activity的啟動(dòng)方式有哪幾種?
Activity啟動(dòng)模式有4種,分別為standard、singleTop、singleTask、singleInstance。
1.standard 默認(rèn)模式,可以不用寫配置。在這個(gè)模式下,都會(huì)默認(rèn)創(chuàng)建一個(gè)新的實(shí)例。因此,在這種模式下,可以有多個(gè)相同的實(shí)例,也允許多個(gè)相同Activity疊加。
2.singleTop 可以有多個(gè)實(shí)例,但是不允許多個(gè)相同Activity疊加。即,如果Activity在棧頂?shù)臅r(shí)候,啟動(dòng)相同的Activity,不會(huì)創(chuàng)建新的實(shí)例,而會(huì)調(diào)用其onNewIntent方法。
3.singleTask 只有一個(gè)實(shí)例。在同一個(gè)應(yīng)用程序中啟動(dòng)他的時(shí)候,若Activity不存在,則會(huì)在當(dāng)前task創(chuàng)建一個(gè)新的實(shí)例,若存在,則會(huì)把task中在其之上的其它Activity destory掉并調(diào)用它的onNewIntent方法。
4.singleInstance只有一個(gè)實(shí)例,并且這個(gè)實(shí)例獨(dú)立運(yùn)行在一個(gè)task中,這個(gè)task只有這個(gè)實(shí)例,不允許有別的Activity存在。
請(qǐng)教高人,能說下activity四種啟動(dòng)模式的應(yīng)用場(chǎng)景嗎?
當(dāng)應(yīng)用運(yùn)行起來后就會(huì)開啟一條線程,線程中會(huì)運(yùn)行一個(gè)任務(wù)棧,當(dāng)Activity實(shí)例創(chuàng)建后就會(huì)放入任務(wù)棧中。Activity啟動(dòng)模式的設(shè)置在AndroidManifest.xml文件中,通過配置Activity的屬性android:launchMode=""設(shè)置。
1. Standared模式(默認(rèn))
我們平時(shí)直接創(chuàng)建的Activity都是這種模式的Activity,這種模式的Activity的特點(diǎn)是:只要你創(chuàng)建了Activity實(shí)例,一旦激活該Activity,則會(huì)向任務(wù)棧中加入新創(chuàng)建的實(shí)例,退出Activity則會(huì)在任務(wù)棧中銷毀該實(shí)例。
2. SingleTop模式
這種模式會(huì)考慮當(dāng)前要激活的Activity實(shí)例在任務(wù)棧中是否正處于棧頂,如果處于棧頂則無需重新創(chuàng)建新的實(shí)例,會(huì)重用已存在的實(shí)例,否則會(huì)在任務(wù)棧中創(chuàng)建新的實(shí)例。
3. SingleTask模式
如果任務(wù)棧中存在該模式的Activity實(shí)例,則把棧中該實(shí)例以上的Activity實(shí)例全部移除,調(diào)用該實(shí)例的newInstance()方法重用該Activity,使該實(shí)例處?kù)稐m斘恢茫駝t就重新創(chuàng)建一個(gè)新的Activity實(shí)例。
4. SingleInstance模式
當(dāng)該模式Activity實(shí)例在任務(wù)棧中創(chuàng)建后,只要該實(shí)例還在任務(wù)棧中,即只要激活的是該類型的Activity,都會(huì)通過調(diào)用實(shí)例的newInstance()方法重用該Activity,此時(shí)使用的都是同一個(gè)Activity實(shí)例,它都會(huì)處于任務(wù)棧的棧頂。此模式一般用于加載較慢的,比較耗性能且不需要每次都重新創(chuàng)建的Activity。
androidservice的啟動(dòng)方式有哪幾種?
Service的生命周期Service的生命周期方法比Activity少一些,只有onCreate,onStart,onDestroy我們有兩種方式啟動(dòng)一個(gè)Service,他們對(duì)Service生命周期的影響是不一樣的?!?;通過startService: Service會(huì)經(jīng)歷onCreate->onStart, stopService的時(shí)候直接onDestroy如果是調(diào)用者(TestServiceHolder)自己直接退出而沒有調(diào)用stopService的話,Service會(huì)一直在后臺(tái)運(yùn)行。下次TestServiceHolder再起來可以stopService。 2:通過bindService: Service只會(huì)運(yùn)行onCreate,這個(gè)時(shí)候TestServiceHolder和TestService綁定在一起 TestServiceHolder退出了,Srevice就會(huì)調(diào)用onUnbind->onDestroyed所謂綁定在一起就共存亡了?! ∧怯型瑢W(xué)問了,要是這幾個(gè)方法交織在一起的話,會(huì)出現(xiàn)什么情況呢? 一個(gè)原則是Service的onCreate的方法只會(huì)被調(diào)用一次,就是你無論多少次的startService又bindService,Service只被創(chuàng)建一次。如果先是bind了,那么start的時(shí)候就直接運(yùn)行Service的onStart方法,如果先是start,那么bind的時(shí)候就直接運(yùn)行onBind方法。如果你先bind上了,就stop不掉了,對(duì)啊,就是stopService不好使了,只能先UnbindService,再StopService,所以是先start還是先bind行為是有區(qū)別的。
如何修改默認(rèn)啟動(dòng)activity?
在Android中每個(gè)界面都是一個(gè)Activity,切換界面操作其實(shí)是多個(gè)不同Activity之間的實(shí)例化操作。在Android中Activity的啟動(dòng)模式?jīng)Q定了Activity的啟動(dòng)運(yùn)行方式。 Android總Activity的啟動(dòng)模式分為四種: Activity啟動(dòng)模式設(shè)置: <activity android:name=".MainActivity" android:launchMode="standard" /> Activity的四種啟動(dòng)模式: 1. standard 模式啟動(dòng)模式,每次激活A(yù)ctivity時(shí)都會(huì)創(chuàng)建Activity,并放入任務(wù)棧中。 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í),會(huì)讓該實(shí)例回到棧頂,因此在它上面的實(shí)例將會(huì)被移除棧。如果棧中不存在該實(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)用中。 其中standard是系統(tǒng)默認(rèn)的啟動(dòng)模式。