首頁>技術>

前言

接下來我將重新回顧Android的核心基礎,俗話說萬變不離其宗,想必是時候開始總結歸納了。

面試官:什麼是Activity?我:。。。

面試官:闡述一下 Activity 的生命週期?我:。。。

面試官:知道Activity的啟動流程嗎?我:。。。

看似簡單,卻只答出個大概,也許這只是平時少總結罷了。

目錄Activity生命週期Activity任務棧Activity啟動模式scheme跳轉協議1、Activity生命週期:

關於Activity的生命週期,離不開經典的流程圖

activity生命週期.png

Activity的4種狀態running(活動狀態):處於可見並可和使用者互動的狀態。pause(暫停狀態):這個狀態Activity在螢幕上是可見的,但是並不是在螢幕最前端的那個。比如當Activity被另一個透明或者Dialog樣式的Activity覆蓋時的狀態,它仍然可見,卻失去了焦點,故不可與使用者互動。stopped(停止狀態):當Activity完全不可見時,此時Activity還在後臺執行,仍然在記憶體中保留Activity的狀態。killed(死亡狀態):Activity被殺掉以後的狀態。Activity生命週期過程Activity建立啟動:oncreate()-->onstart()-->onresume()點選Home,或者從A跳到B :onpause()-->onstop()再次回到Activity,或者從B返回A:onrestart()-->onstart-->onresume()退出Activity:onpause()-->onstop()-->ondestroy()

有了前面的知識積累後,我相信肯定能更好地分析上面說到的前三條面試題~

2、Activity任務棧:

任務棧採用“後進先出”的棧結構

3、Activity啟動模式:

使用方式配置檔案中新增launchMode屬性,如singleTop:

<activityandroid:name=".MainActivity"android:launchMode="singleTop"></activity>

standard(標準模式):預設模式,每啟動一次Activity,就會建立一個新的Activity例項並置於棧頂。誰啟動了這個Activity,那麼這個Activity就執行在啟動它的那個Activity所在的棧中。

singleTop(棧頂複用模式):Activity處於棧頂時可以複用,就是以這種模式啟動的Activity剛好位於任務棧棧頂,那麼此Activity的例項就不會重建,而是重用棧頂的例項。並回調onNewIntent方法。

singleTask(棧內複用模式):整個任務棧都可以複用,比singletop強多了;其次就是singletask下面的所有Activity將會銷燬,然後也會回撥onNewIntent方法;

singleInstance(單例模式):棧內複用模式(singleTask)的加強版,啟動該Activity時,直接建立一個新的任務棧,並建立該Activity例項放入新棧中,用得比較少。

4、Activity的Flags

Activity的Flags用於設定Activity的啟動模式。可以在啟動Activity時,通過Intent的addFlags()方法設定。(1)FLAG_ACTIVITY_NEW_TASK其效果與指定Activity為singleTask模式一致。(2)FLAG_ACTIVITY_SINGLE_TOP其效果與指定Activity為singleTop模式一致。(3)FLAG_ACTIVITY_CLEAR_TOP具有此標記位的Activity,當它啟動時,在同一個任務棧中所有位於它上面的Activity都要出棧。如果和singleTask模式一起出現,若被啟動的Activity已經存在棧中,則清除其之上的Activity,並呼叫該Activity的onNewIntent方法。如果被啟動的Activity採用standard模式,那麼該Activity連同之上的所有Activity出棧,然後建立新的Activity例項並壓入棧中。

最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 初識flask,搭建第一個自己的網頁