前言
接下來我將重新回顧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的FlagsActivity的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例項並壓入棧中。
- Android程式設計師現狀:沒有架構師的命,卻得了架構師的病
- 終於有人把安卓程式設計師必學知識點全整理出來了,有如醍醐灌頂
- Android使用scheme跳轉App並傳值
- 測試一直都是Android程式設計師忽視的重要一環,再不重視起來就GG了
- 多少程式設計師的夢想職位,成為阿里P7真的就這麼難嗎?學會這些就夠了
- Android開發未來該怎麼走?阿里8年開發經驗程式設計師這麼說的!
- 一天入手Flutter,一週完成一個APP,附教程
- 蘋果警告微信,沒有「黑暗模式」就下架?微信:已與蘋果達成合作
- 前端程式設計師:疫情在家不能出門用vue開發了一個抖音app
- Flutter呼聲越來越高,但唱衰的人依舊不少,跨平臺何時能統一?