日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

andorid 启动模式面试题

發(fā)布時(shí)間:2023/11/27 生活经验 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 andorid 启动模式面试题 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

現(xiàn)在有四個(gè)activity a,b,c,d ,設(shè)置a為標(biāo)準(zhǔn)模式,b為singletop模式 c設(shè)置singletask模式,d設(shè)置SingleInstance?模式

a啟動(dòng)b ,b 啟動(dòng) c ,c啟動(dòng)d 然后d啟動(dòng)a ,a在啟動(dòng)b ,b啟動(dòng)c ,c再啟動(dòng)d?

那么此時(shí)棧中有幾個(gè)activity ?

當(dāng)然 這些模式也可以隨意設(shè)置或者啟動(dòng)順序改變,問棧中有幾個(gè)activity ,

在想這類問題的時(shí)候需要清除四種啟動(dòng)模式,在回到這個(gè)問題的時(shí)候先了解下啟動(dòng)模式

?

1?standard(默認(rèn)) 默認(rèn)啟動(dòng)模式

每次啟動(dòng)一個(gè)Activity都會(huì)創(chuàng)建一個(gè)新的實(shí)例,并放入棧頂位置。也就說會(huì)不斷地新建activity實(shí)例,都放入同一個(gè)task中

2?singleTop?棧頂復(fù)用模式

如果啟動(dòng)的Activity已經(jīng)位于任務(wù)棧的棧頂,就不會(huì)重新創(chuàng)建實(shí)例,而是調(diào)用onNewIntent(intent)方法。反之創(chuàng)建新的實(shí)例加入棧中。 解釋:這個(gè)是看棧頂有沒有activitiy 有的話就直接使用,沒有的就和默認(rèn)模式一樣了,先創(chuàng)建一個(gè)放在棧頂,

3?singleTask棧內(nèi)復(fù)用模式?

只要該Activity在一個(gè)任務(wù)棧中存在,就不會(huì)重新創(chuàng)建新的實(shí)例。并把棧中在其之上的其他Activity Destroy掉,調(diào)用onNewIntent(intent)方法。如果不存在,創(chuàng)建新的實(shí)例并入棧。

解釋:這個(gè)模式創(chuàng)建的時(shí)候會(huì)先看棧是否存在活動(dòng)的實(shí)例,有的話會(huì)把該activity上的所有活動(dòng)毀掉,沒有的話直接創(chuàng)建一個(gè)

4?singleInstance單實(shí)例模式

Activity只能單獨(dú)位于一個(gè)任務(wù)棧中,并且這個(gè)任務(wù)棧只存在這一個(gè)實(shí)例。

?解釋:這個(gè)是全局單例模式,自己還單獨(dú)占一個(gè)棧,下次使用的時(shí)候直接調(diào)用即可,

這個(gè)模式一般用在系統(tǒng)應(yīng)用中比如鎖屏等,一般我們寫的app中很少用到,我工作好多年從來沒有設(shè)置過,好尷尬,可能自己

知識(shí)點(diǎn)不足,還需要多加努力學(xué)習(xí),

清楚了這些啟動(dòng)模式,現(xiàn)在回答下剛開始的面試題

首先第一啟動(dòng)的時(shí)候無論設(shè)置怎么由于棧中都沒有 ,所以首先會(huì)創(chuàng)建一個(gè),重點(diǎn)就是

在來一次啟動(dòng)

記錄下此時(shí)的棧的activity?

畫一個(gè)草圖記錄一下

a->b->c->d

之后d->a

此時(shí)c 位于棧頂 a設(shè)置的默認(rèn)模式此時(shí)a會(huì)創(chuàng)建 如下圖

之后d->a->b?

此時(shí)a位于棧頂 ,b設(shè)置的棧頂模式, 但是由于棧頂不是b所以會(huì)在此創(chuàng)建b 如下圖

之后再d->a->b->c

此時(shí)b位于棧頂,c設(shè)置的棧內(nèi)復(fù)用模式 ,c會(huì)把它之上的活動(dòng)銷毀掉 此時(shí)如下

之后再d->a->b->c->d?

此時(shí)c位于棧頂,d設(shè)置的是singleInstance 棧中有了d的存在,不會(huì)再重新創(chuàng)建了

效果圖和上面的圖一樣

2次啟動(dòng)之后棧 中的活動(dòng)有a,b,c,d

自己測(cè)試的效果如下

測(cè)試效果和自己猜測(cè)的一樣,??

為了驗(yàn)證這次我點(diǎn)擊手機(jī)的返回鍵,看看效果的是否是四個(gè)activity

果然棧中此時(shí)之后四個(gè)activity,?

無論這類面試題設(shè)置什么模式,細(xì)心想想,還是很簡(jiǎn)單的,這四種模式別弄錯(cuò)了

如果回答正確了, 有人可能換回再問?

b在此啟動(dòng)c的時(shí)候由于c沒有創(chuàng)建那么它怎樣傳遞數(shù)據(jù),?

,若果你想到了,說明我上面的四種啟動(dòng)模式,您認(rèn)真看了,沒有想到可能還需要在看看?

答案是onNewIntent 傳遞數(shù)據(jù).,,,

?

?

?

?

?

?

總結(jié)

以上是生活随笔為你收集整理的andorid 启动模式面试题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。