亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Activity的LaunchMode

發布時間:2020-06-21 01:55:46 來源:網絡 閱讀:425 作者:VincentTung 欄目:開發技術

 什么是Task

先講一下android中的Task。可以把它看做是一個棧,用在存放Activity的棧,只有兩個動作,進棧和出棧,遵循先進后出的原則。

Activity的LaunchMode

一、Activity的啟動模式有四種:

1. Standard

2. singleTop

3. singleTask

4. singleInstance

問:哪里設置Activity的啟動模式呢?

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

問:這些啟動模式的設置決定了什么?或者作用是什么?

答:決定了他們在Task中的存在方式

二、四種模式的解釋

1. standard  

 默認的模式,每次都會新建,每個Task都可以有,且每個Task都可以有多個實例(每個Task都可以有,且可以有多個)  

2. singleTop

 當前實例如果在棧頂,就不新建實例,調用其OnNewIntent。 如不在棧頂,則新建實例  (每個Task都可以有,且可以有多個,在棧頂時可復用)  

3. singleTask

 新建一個Task,如果已經有其他的Task并且包含該實例,那就直接調用那個Task的實例。(只有一個Task中會有)  

4. singleInstance 

新建一個Task,且在該Task中只有它的唯一一個實例。 (只有一個Task會有,且該Task中只有它)  

三、演示

Activity的LaunchMode

實例一、

如上圖,創建三個Activity,每個Activity中都有一個Button,單擊后會跳到下一個Activity

默認是standard模式,這時候看一下Task中的情況

Activity的LaunchMode

 

Activity的LaunchMode

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

實例二、

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

先用一個Activity證明吧,這是一個Activity,點擊按鈕后跳到他本身。例子本身沒有什么實際作用,只是為證明singleTop

Activity的LaunchMode

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

Task棧中情況如下

Activity的LaunchMode

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

Activity的LaunchMode

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

實例三、

關于singTasksingleTask模式和后面的singleInstance模式都是只創建一個實例的。

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

將實例一中的Activity A 設置為singleTask模式,如下圖

Activity的LaunchMode

則棧中的關系如下

Activity的LaunchMode

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

Activity CActivity A進行跳轉時,Task中到發生了什么?

因為Activity A的家在模式為singTask會先判斷Task A中是否有Activity A 的實例,如果有,就不用實例化了,如果沒有就要實例化。結果在Task  A中有Activity的實例,但是在棧底,這時候怎么辦呢,會先將Activity C彈出棧,然后在彈出 Activity B彈出棧。如下圖

Activity的LaunchMode

實例四、

Activity的LaunchMode

Activity A launchModesingInstance,會創建一個新的Task,然后在Task中只有一個實例就是Activity A.

棧中情況如下

Activity的LaunchMode

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

河曲县| 衡南县| 阿拉尔市| 乐至县| 宜章县| 陇西县| 三河市| 宁远县| 大名县| 泗阳县| 华亭县| 和平区| 新宁县| 宜宾县| 攀枝花市| 阳泉市| 青浦区| 广安市| 高台县| 天祝| 新田县| 万州区| 宣汉县| 西华县| 华安县| 明溪县| 房产| 宜宾市| 泌阳县| 固阳县| 丹寨县| 福鼎市| 门头沟区| 威远县| 乡宁县| 仁寿县| 左云县| 长葛市| 革吉县| 靖边县| 如东县|