Android中Activity的四種啟動模式


    要了解Android的啟動模式先要了解一下Activity的管理方式:

   1.Activity的管理機制

      Android的管理主要是通過Activity棧來進行的。當一個Activity啟動時,系統根據其配置或調用的方式,將Activity壓入一個特定的棧中,系統處 於運行(Running or Resumed)狀態。當按Back鍵或觸發finish()方法時,Activity會從棧中被壓出,進而被銷毀,當有新的Activity壓入棧時, 如果原Activity仍然可見,則原Activity的狀態將轉變為暫停(Paused)狀態,如果原Activity完全被遮擋,那么其狀態將轉變為 停止(Stopped)。

  2.Task

   Task按我的理解,Activity對應的task,就相當於數據所對應的一種數據結構棧(Stack),一個Task對應一個Activity棧。

  3.啟動模式的作用

    Activity啟動模式就是屬於Activity配置屬性之一,叫它具有四種啟動模式,分別是:1.standard ,2.singleTop,3.singleTask,4.singleInstance,一般如果不顯示聲明,默認為standard模式。launchMode 在多個Activity跳轉的過程中扮演着重要的角色,它可以決定是否生成新的Activity實例,是否重用已存在的Activity實例,是否和其他 Activity實例公用一個task里。

  4.模式說明

  • standard模式:這是系統默認的啟動模式,這種模式就是創建一個Activity壓入Task容器棧中,當當前Activity激活,並處在和用戶交互時,此Activity彈出棧頂,當finish()的時候,在任務棧中銷毀該實例。
  • singleTop模式:這種模式首先會判斷要激活的Activity是否在棧頂,如果在則不重新創建新的實例,復用當前的實例,如果不在棧頂,則在任務棧中創建實例。條件是是否在棧頂,而不是是否在棧中。
  • singleTask模式: 這種模式啟 動的目標Activity實例如果已經存在task容器棧中,不管當前實例處於棧的任何位置,是棧頂也好,棧底也好,還是處於棧中間,只要目標 Activity實例處於task容器棧中,都可以重用該Activity實例對象,然后,把處於該Activity實例對象上面全部Activity實 例清除掉,並且,task容器棧中永遠只有唯一實例對象,不會存在兩個相同的實例對象。所以,如果你想你的應用不管怎么啟動目標Activity,都只有 唯一一個實例對象,就使用這種啟動模式。
  • singleInstance模式:當該模式Activity實例在任務棧中創建后,只要該實例還在任務棧中,即只要激活的是該類型的Activity,都會通過調用實例的newInstance()方法重用該Activity,此時使用的都是同一個Activity實例,它都會處於任務棧的棧頂。此模式一般用於加載較慢的,比較耗性能且不需要每次都重新創建的Activity。

  5.總結

      總之,Android四大啟動模式相當簡單。默認standard模式,他是task容器棧可能存在相同的Activity實例;singletop模式 下,重用棧頂Activity實例,棧頂不存在,則創建新的Activity實例,該模式下有可能存在相同Activity實例;singletask模 式,task容器棧存在目標Activity實例,則重用該實例,task容器棧永遠只有唯一activity實例,並且,其一是Activity實例被 清除掉。singleinstance模式,不同應用可以共享Activity實例,並且是處於不同容器棧中

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM