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裏。