Activity的LaunchMode-創(chuàng)新互聯(lián)

什么是Task

平桂網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),平桂網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為平桂成百上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的平桂做網(wǎng)站的公司定做!

先講一下android中的Task。可以把它看做是一個(gè)棧,用在存放Activity的棧,只有兩個(gè)動(dòng)作,進(jìn)棧和出棧,遵循先進(jìn)后出的原則。

Activity的LaunchMode

一、Activity的啟動(dòng)模式有四種:

1. Standard

2. singleTop

3. singleTask

4. singleInstance

問:哪里設(shè)置Activity的啟動(dòng)模式呢?

答:在Menifest.xml中設(shè)置Activity的屬性android:launchMode="singleTop"

問:這些啟動(dòng)模式的設(shè)置決定了什么?或者作用是什么?

答:決定了他們?cè)?font face="Calibri">Task中的存在方式

二、四種模式的解釋

1. standard

 默認(rèn)的模式,每次都會(huì)新建,每個(gè)Task都可以有,且每個(gè)Task都可以有多個(gè)實(shí)例(每個(gè)Task都可以有,且可以有多個(gè))  

2. singleTop

 當(dāng)前實(shí)例如果在棧頂,就不新建實(shí)例,調(diào)用其OnNewIntent。 如不在棧頂,則新建實(shí)例  (每個(gè)Task都可以有,且可以有多個(gè),在棧頂時(shí)可復(fù)用)  

3. singleTask

 新建一個(gè)Task,如果已經(jīng)有其他的Task并且包含該實(shí)例,那就直接調(diào)用那個(gè)Task的實(shí)例。(只有一個(gè)Task中會(huì)有)  

4. singleInstance

新建一個(gè)Task,且在該Task中只有它的唯一一個(gè)實(shí)例。 (只有一個(gè)Task會(huì)有,且該Task中只有它)  

三、演示

Activity的LaunchMode

實(shí)例一、

如上圖,創(chuàng)建三個(gè)Activity,每個(gè)Activity中都有一個(gè)Button,單擊后會(huì)跳到下一個(gè)Activity。

默認(rèn)是standard模式,這時(shí)候看一下Task中的情況

Activity的LaunchMode

Activity的LaunchMode

會(huì)看到在Task A中有兩個(gè)Activity A,所以standard是每次都在初始化一個(gè)新的Activity

實(shí)例二、

 為了證明singleTop模式,我們將Activity之間的跳轉(zhuǎn)方式改變一下,如下圖

先用一個(gè)Activity證明吧,這是一個(gè)Activity,點(diǎn)擊按鈕后跳到他本身。例子本身沒有什么實(shí)際作用,只是為證明singleTop

Activity的LaunchMode

如果是模式standard模式,大家想一下,棧的情況會(huì)是怎樣的?

Task棧中情況如下

Activity的LaunchMode

但如果是singleTop中,不管你按多少次button,棧中的情況只有一種,singleTop會(huì)判斷當(dāng)前這個(gè)Activity是不是在Task的頂部,如果是在頂部就不會(huì)去new,如果不是,就會(huì)new

Activity的LaunchMode

如果把實(shí)例一中的每個(gè)ActivitylaunchMode都設(shè)置成singleTop,那么Task中的情況回合是實(shí)例一棧的情況是一模一樣的。

實(shí)例三、

關(guān)于singTask,singleTask模式和后面的singleInstance模式都是只創(chuàng)建一個(gè)實(shí)例的。

如果Activity A設(shè)置了singleTask,那個(gè)么棧中只有Activity A的一個(gè)實(shí)例,但是可以包含Actvity B ,Activty C 的實(shí)例,這與singleInstance是有區(qū)別的,singleInstance是一個(gè)棧中只有這一個(gè)Activity 的實(shí)例,只有一個(gè)。

將實(shí)例一中的Activity A 設(shè)置為singleTask模式,如下圖

Activity的LaunchMode

則棧中的關(guān)系如下

Activity的LaunchMode

我們看到在4步的時(shí)候發(fā)生了變化,棧中就只有Activity A了,此時(shí)如果按Back鍵時(shí),就退出了程序。

Activity CActivity A進(jìn)行跳轉(zhuǎn)時(shí),Task中到發(fā)生了什么?

因?yàn)?font face="Calibri">Activity A的家在模式為singTask,會(huì)先判斷Task A中是否有Activity A 的實(shí)例,如果有,就不用實(shí)例化了,如果沒有就要實(shí)例化。結(jié)果在Task  A中有Activity的實(shí)例,但是在棧底,這時(shí)候怎么辦呢,會(huì)先將Activity C彈出棧,然后在彈出 Activity B彈出棧。如下圖

Activity的LaunchMode

實(shí)例四、

Activity的LaunchMode

Activity A launchModesingInstance,會(huì)創(chuàng)建一個(gè)新的Task,然后在Task中只有一個(gè)實(shí)例就是Activity A.

棧中情況如下

Activity的LaunchMode

這種模式下,要注意Activity的回退情況,就是按Back鍵的時(shí)候Activity的回退情況。此時(shí)如果按Back鍵,先返回到Activity A,然后是,B

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

分享題目:Activity的LaunchMode-創(chuàng)新互聯(lián)
網(wǎng)頁鏈接:http://www.muchs.cn/article48/dsscep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、微信小程序、定制開發(fā)、網(wǎng)頁設(shè)計(jì)公司、電子商務(wù)、響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)