最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android Activity的4種啟動(dòng)模式圖文介紹

 更新時(shí)間:2020年11月13日 12:04:23   作者:黃林晴_阿黃哥  
這篇文章主要給大家介紹了關(guān)于Android Activity的4種啟動(dòng)模式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

記得第一次探討Activity的啟動(dòng)模式,是在2017年8月份,那個(gè)時(shí)候?qū)σ荒旰笞叱鲂iT的未來很是憧憬,時(shí)間真快,已經(jīng)畢業(yè)四個(gè)月,工作和生活也都趨于穩(wěn)定。

一、小前言

相信很多人和我一樣,在初學(xué)Android甚至初入職場的時(shí)候不了解Acticity的啟動(dòng)模式,或者為了面試刷題刷到了,但并不理解啟動(dòng)模式的作用,以及如何正確的使用啟動(dòng)模式而不是所有的都是用默認(rèn)模式。

二、Activity啟動(dòng)模式簡介

Activity有四種啟動(dòng)模式,standard、singleTop、singleTask、singleInstance,默認(rèn)啟動(dòng)模式是standard

2.1 standard 模式

程序啟動(dòng)的時(shí)候,會(huì)默認(rèn)創(chuàng)建一個(gè)任務(wù)棧,Activity是放在任務(wù)棧里面的,比如我們新建一個(gè)項(xiàng)目,默認(rèn)生成一個(gè)ActivityA,那么此時(shí)任務(wù)棧是這樣的:

​,比如我們?cè)贏ctivityA中有一個(gè)按鈕,點(diǎn)擊按鈕跳轉(zhuǎn)到ActivityB,ActivityB中有一個(gè)按鈕,點(diǎn)擊按鈕跳轉(zhuǎn)到ActivityC,那么此時(shí)該棧是這樣的:

那么如果在ActivityC中有個(gè)按鈕跳轉(zhuǎn)到ActivityB呢?沒錯(cuò),是再次創(chuàng)建一個(gè)ActivityB實(shí)例

那么此時(shí),我們點(diǎn)擊返回鍵,會(huì)首先移除棧頂?shù)腁ctivityB,回到ActivityC,在移除棧頂?shù)腁ctivityC回到ActivityB,以此類推。

當(dāng)Activity全部退出時(shí),系統(tǒng)會(huì)自動(dòng)回收這個(gè)空棧。

2.2 singleTop模式

改變Activity的啟動(dòng)模式,可以在配置文件中為Activity添加lauchMode屬性

singleTop模式為棧頂復(fù)用模式,通俗的說,就是如果棧頂?shù)腁ctivity和啟動(dòng)的Activity的是同一個(gè),那么就直接復(fù)用,比如還是在ActivityA中跳轉(zhuǎn)到ActivityB,我們將ActivityB的啟動(dòng)模式設(shè)置為singleTop,因?yàn)楫?dāng)前棧頂是ActivityA,不是ActivityB,所以會(huì)創(chuàng)建新的ActivityB實(shí)例放入任務(wù)棧中

現(xiàn)在我們?cè)贏ctivityB中點(diǎn)擊按鈕跳轉(zhuǎn)ActivityB,因?yàn)楫?dāng)前棧頂就是ActivityB所以會(huì)直接復(fù)用,此時(shí)棧內(nèi)仍是ActivityB和ActivityA,此時(shí)點(diǎn)擊返回按鈕會(huì)直接退回到ActivityA。

2.3 singleTask 模式

singleTask是棧內(nèi)復(fù)用模式,在這里棧內(nèi)復(fù)用要區(qū)分要啟動(dòng)的Activity的所需棧是否是當(dāng)前棧

2.3.1 是當(dāng)前棧

比如現(xiàn)在有ActivityA 啟動(dòng)模式為singleTask ,在ActivityA中啟動(dòng)ActivityB,ActivityB在棧中不存在實(shí)例,則創(chuàng)建ActivityB實(shí)例,此時(shí)棧為:

假設(shè)現(xiàn)在在ActivityB中啟動(dòng)ActivityA,會(huì)在當(dāng)前棧中是否有ActivityA,若有則將ActivityA移到棧內(nèi),將位于ActivityA之上的移出棧頂,那么現(xiàn)在棧為:

此時(shí)按返回鍵會(huì)直接退出程序,如果當(dāng)前棧為

我們現(xiàn)在啟動(dòng)ActivityB中啟動(dòng)ActivityA,則會(huì)將位于ActivityA棧頂?shù)腁ctivityB、ActivityC以及ActivityB移出棧頂,此時(shí)棧內(nèi)只是有ActivityA。

2.3.1 不是當(dāng)前棧

不是當(dāng)前棧的情況比較特殊,這里簡單介紹

假設(shè)當(dāng)前任務(wù)棧是A,A棧中有ActivityA、ActivityB,在B中啟動(dòng)ActivityC,并且ActivityC所需的任務(wù)棧為B,棧B不存在所以會(huì)首先創(chuàng)建棧B,然后創(chuàng)建ActivityC實(shí)例放入棧B中

那么我們?nèi)绾沃付▎?dòng)的Activity所需的棧名稱,這里就要說TaskAffinity參數(shù),這里我們參考官方文檔:

developer.android.com/guide/topic

TaskAffinity可以理解為任務(wù)親屬性或相關(guān)性,默認(rèn)情況下,應(yīng)用中的所有 Activity 都具有相同的親和關(guān)系

默認(rèn)任務(wù)棧的名字為應(yīng)用包名,同樣我們可以在配置文件中設(shè)置TaskAffinity屬性,但必須和singleTask啟動(dòng)模式配對(duì)使用

2.4 singleInstance模式

singleInstance模式也是"棧內(nèi)"復(fù)用模式,不過,比如現(xiàn)在當(dāng)前棧中有ActivityA,我們?cè)贏中啟動(dòng)ActivityB,ActivityB的啟動(dòng)模式是singleInstance,此時(shí)會(huì)創(chuàng)建一個(gè)新的任務(wù)棧,創(chuàng)建ActivityB實(shí)例將ActivityB放在新的任務(wù)棧中

2.5 Java代碼設(shè)置啟動(dòng)模式

除了在配置文件中,我們還可以通過在Java代碼中設(shè)置啟動(dòng)模式

intent.setFlags();

singleTask 對(duì)應(yīng) FLAG_ACTIVITY_NEW_TASK

singleTop 對(duì)應(yīng) FLAG_ACTIVITY_SINGLE_TOP

到此這篇關(guān)于Android Activity的4種啟動(dòng)模式的文章就介紹到這了,更多相關(guān)Android Activity的4種啟動(dòng)模式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用ViewPager實(shí)現(xiàn)高仿launcher左右拖動(dòng)效果

    使用ViewPager實(shí)現(xiàn)高仿launcher左右拖動(dòng)效果

    今天用ViewPager這個(gè)類實(shí)現(xiàn)了同樣的左右拖動(dòng)效果,這樣代碼更少,但是效果是一樣的,ViewPager是實(shí)現(xiàn)左右兩個(gè)屏幕平滑地切換的一個(gè)類,它是Google提供的,有需要的朋友可以了解下
    2013-01-01
  • Android實(shí)現(xiàn)簡單的popupwindow提示框

    Android實(shí)現(xiàn)簡單的popupwindow提示框

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)簡單的popupwindow提示框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • Android中RecyclerView實(shí)現(xiàn)分頁滾動(dòng)的方法詳解

    Android中RecyclerView實(shí)現(xiàn)分頁滾動(dòng)的方法詳解

    RecyclerView實(shí)現(xiàn)滾動(dòng)相信對(duì)大家來說都不陌生,但是本文主要給大家介紹了利用Android中RecyclerView實(shí)現(xiàn)分頁滾動(dòng)的思路和方法,可以實(shí)現(xiàn)翻頁功能,一次翻一頁,也可以實(shí)現(xiàn)翻至某一頁功能。文中給出了詳細(xì)的示例代碼,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-04-04
  • android圖片處理 讓圖片變成圓形

    android圖片處理 讓圖片變成圓形

    這篇文章主要為大家詳細(xì)介紹了android圖片處理的相關(guān)資料,讓圖片變成圓形,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Android實(shí)現(xiàn)圖片點(diǎn)擊放大

    Android實(shí)現(xiàn)圖片點(diǎn)擊放大

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)圖片點(diǎn)擊放大,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • Flutter 系統(tǒng)是如何實(shí)現(xiàn)ExpansionPanelList的示例代碼

    Flutter 系統(tǒng)是如何實(shí)現(xiàn)ExpansionPanelList的示例代碼

    Flutter組件有一個(gè)很大的特色,那就是很多復(fù)雜的組件都是通過一個(gè)一個(gè)小組件拼裝而成的,今天就來說說系統(tǒng)的ExpansionPanelList是如何實(shí)現(xiàn)的,需要的朋友可以參考下
    2020-05-05
  • Android Loader詳細(xì)介紹及實(shí)例代碼

    Android Loader詳細(xì)介紹及實(shí)例代碼

    這篇文章主要介紹了Android Loader詳細(xì)介紹及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • Android消息機(jī)制原理深入分析

    Android消息機(jī)制原理深入分析

    這篇文章主要介紹了Android消息機(jī)制原理,Android的消息機(jī)制主要是指Handler的運(yùn)行機(jī)制以及Handler所附帶的MessageQueue和Looper的工作過程
    2022-12-12
  • Android入門之ListView應(yīng)用解析(一)

    Android入門之ListView應(yīng)用解析(一)

    這篇文章主要介紹了Android入門之ListView應(yīng)用,簡單說明了ListView的實(shí)現(xiàn),需要的朋友可以參考下
    2014-08-08
  • 使用Android WebSocket實(shí)現(xiàn)即時(shí)通訊功能

    使用Android WebSocket實(shí)現(xiàn)即時(shí)通訊功能

    即時(shí)通訊(Instant Messaging)最重要的毫無疑問就是即時(shí),不能有明顯的延遲,要實(shí)現(xiàn)IM的功能其實(shí)并不難,目前有很多第三方,比如極光的JMessage,都比較容易實(shí)現(xiàn)。本文通過實(shí)例代碼給大家分享Android WebSocket實(shí)現(xiàn)即時(shí)通訊功能,一起看看吧
    2019-10-10

最新評(píng)論

武清区| 墨玉县| 花莲市| 监利县| 成武县| 永靖县| 孝义市| 三门县| 和平县| 常熟市| 武城县| 新安县| 商城县| 张家界市| 交口县| 隆化县| 海兴县| 施秉县| 武威市| 花莲市| 邵阳县| 吐鲁番市| 阿图什市| 龙州县| 十堰市| 且末县| 黄梅县| 丹阳市| 凤山市| 中山市| 泽普县| 无棣县| 资中县| 永康市| 察隅县| 齐齐哈尔市| 桐乡市| 蒲城县| 新龙县| 宁波市| 石屏县|