詳解Android開發中Activity的四種launchMode

來源:互聯網
上載者:User

標籤:

Activity棧主要用於管理Activity的切換。當使用Intent跳轉至某個目標Activity,需要根據目標Activity的載入模式來載入。

Activity一共有以下四種launchMode:

1.standard:預設,每次使用Intent跳轉到目標Activity時都建立一個新的執行個體。壞處是每次進入都要建立新的執行個體,執行OnCreate方法。

2.singleTop:如果要跳轉的目標Activity正好在task的頂部(說明當前肯定不在目標task裡,例如我在首頁,然後想使用Intent跳轉到InnoXYZ應用的首頁,那麼加入InnoXYZ首頁正好在InnoXYZ的task頂部,就直接跳轉而不會建立執行個體),那麼就直接跳轉過去而不會建立新的。(例子,當前在Home Screen, 收到一條首頁的推送,而此時task棧裡的task裡的Activity棧裡的最頂部正好就是首頁,那麼點擊推送就直接進入該執行個體而不會建立新的執行個體)

3.singleTask:會在一個新的task中產生這個執行個體,以後每次調用都會使用這個,不會去產生新的執行個體了。

4.singleInstance:是其所在棧的唯一activity,它會每次都被重用。

launchMode在多個Activity跳轉的過程中扮演著重要的角色,它可以決定是否產生新的Activity執行個體,是否重用已存在的Activity執行個體,是否和其他Activity執行個體公用一個task裡。這裡簡單介紹一下task的概念,task是一個具有棧結構的對象,一個task可以管理多個Activity,啟動一個應用,也就建立一個與之對應的task。

我們可以在AndroidManifest.xml配置<activity>的android:launchMode屬性為以上四種之一即可。

 

 

android:exported
  1. 在Activity中該屬性用來標示:當前Activity是否可以被另一個Application的組件啟動:true允許被啟動;false不允許被啟動。

  2. android:exported 是Android中的四大組件 Activity,Service,Provider,Receiver 四大組件中都會有的一個屬性。

  3. 總體來說它的主要作用是:是否支援其它應用調用當前組件。

詳解Android開發中Activity的四種launchMode

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.