安卓系列六(Activity的啓動模式以及生命週期)

1、什麼是Activity?android

    簡單的說:Activity就是佈滿整個窗口或者懸浮於其餘窗口上的交互界面。在一個應用程序中一般由多個Activity構成,都會在Manifest.xml中指定一個主的Activity,以下設置spa


<actionandroid:name="android.intent.action.MAIN" />orm


當程序第一次運行時用戶就會看這個Activity,這個Activity能夠經過啓動其餘的Activity進行相關操做。當啓動其餘的Activity時這個當前的這個Activity將會中止,新的Activity將會壓入棧中,同時獲取用戶焦點,這時就可在這個Activity上操做了。都知道棧是先進後出的原則,那麼當用戶按Back鍵時,當前的這個Activity銷燬,前一個Activity從新恢復。xml


2、Activity生命週期生命週期

看下圖:it

3、啓動模式io

Android爲咱們定義了四種加載模式,分別是:standard、singleTop、singleTask和singleInstance。請求

 

standard加載模式下,當一個Task請求加載一個Activity時,該Task直接實例化這個Activity,並把它放到棧頂,無論以前棧中是否存在該Activity的實例。程序

 

當activity被設置爲singleTop的加載模式時,當一個Task請求加載一個Activity時,若是該Task對應的棧的棧頂就是一個Activity的實例,那麼,它便不會從新建立,而是調用onNewIntent。若是該Task對應的棧中Activity的實例存在,但不是在頂部,那麼該Activity依然要從新建立。簡單的說就是得到焦點的Activity(當前的Activity)不能再激活一個本身的實例唄。singleTop模式下的Activity能夠被實例化屢次,可是不能夠多個相同的Activity的實例重疊。im

 

singleTask加載模式時,當一個Task請求加載一個Activity時,若是該Task對應的棧中有一個Activity的實例,那麼它便不會從新建立。若是已經實例化,會將Task中其上的Activity實例銷燬後,調用onNewIntent。一句話,singleTask模式下的Activity,在本身的Task裏只有一個實例,而且啓動時不容許其餘Activity凌駕於本身之上

 

在singleInstance這個模式下,當一個Task請求加載一個Activity時,若是全部Task的棧中有一個Activity的實例,那麼,它便不會從新建立。若是全部Task的棧中沒有一個Activity的實例,那麼該Activity的實例被建立,並獨佔一個新的task,其它activity不能存在這個task裏。

相關文章
相關標籤/搜索