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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

andorid 启动模式面试题

發布時間:2023/11/27 生活经验 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 andorid 启动模式面试题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

現在有四個activity a,b,c,d ,設置a為標準模式,b為singletop模式 c設置singletask模式,d設置SingleInstance?模式

a啟動b ,b 啟動 c ,c啟動d 然后d啟動a ,a在啟動b ,b啟動c ,c再啟動d?

那么此時棧中有幾個activity ?

當然 這些模式也可以隨意設置或者啟動順序改變,問棧中有幾個activity ,

在想這類問題的時候需要清除四種啟動模式,在回到這個問題的時候先了解下啟動模式

?

1?standard(默認) 默認啟動模式

每次啟動一個Activity都會創建一個新的實例,并放入棧頂位置。也就說會不斷地新建activity實例,都放入同一個task中

2?singleTop?棧頂復用模式

如果啟動的Activity已經位于任務棧的棧頂,就不會重新創建實例,而是調用onNewIntent(intent)方法。反之創建新的實例加入棧中。 解釋:這個是看棧頂有沒有activitiy 有的話就直接使用,沒有的就和默認模式一樣了,先創建一個放在棧頂,

3?singleTask棧內復用模式?

只要該Activity在一個任務棧中存在,就不會重新創建新的實例。并把棧中在其之上的其他Activity Destroy掉,調用onNewIntent(intent)方法。如果不存在,創建新的實例并入棧。

解釋:這個模式創建的時候會先看棧是否存在活動的實例,有的話會把該activity上的所有活動毀掉,沒有的話直接創建一個

4?singleInstance單實例模式

Activity只能單獨位于一個任務棧中,并且這個任務棧只存在這一個實例。

?解釋:這個是全局單例模式,自己還單獨占一個棧,下次使用的時候直接調用即可,

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

知識點不足,還需要多加努力學習,

清楚了這些啟動模式,現在回答下剛開始的面試題

首先第一啟動的時候無論設置怎么由于棧中都沒有 ,所以首先會創建一個,重點就是

在來一次啟動

記錄下此時的棧的activity?

畫一個草圖記錄一下

a->b->c->d

之后d->a

此時c 位于棧頂 a設置的默認模式此時a會創建 如下圖

之后d->a->b?

此時a位于棧頂 ,b設置的棧頂模式, 但是由于棧頂不是b所以會在此創建b 如下圖

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

此時b位于棧頂,c設置的棧內復用模式 ,c會把它之上的活動銷毀掉 此時如下

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

此時c位于棧頂,d設置的是singleInstance 棧中有了d的存在,不會再重新創建了

效果圖和上面的圖一樣

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

自己測試的效果如下

測試效果和自己猜測的一樣,??

為了驗證這次我點擊手機的返回鍵,看看效果的是否是四個activity

果然棧中此時之后四個activity,?

無論這類面試題設置什么模式,細心想想,還是很簡單的,這四種模式別弄錯了

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

b在此啟動c的時候由于c沒有創建那么它怎樣傳遞數據,?

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

答案是onNewIntent 傳遞數據.,,,

?

?

?

?

?

?

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。