Activity的生命周期和啟動模式

  • 如果不知道提升的方向,那就回爐重造一次,或許就是一種提升。

1. Activity生命周期

Activity的生命周期通常情況下分為兩種。第一種就是正常情況下的生命周期,就是我們平時做了解到的onCreate(),onStart()等等。第二種生命周期就是異常情況下的生命周期,異常情況下的生命周期包含系統(tǒng)回收,異常崩潰下的生命周期。

正常情況下的生命周期:

  • onCreate() 加載布局界面 初始化資源
  • onRestart() Activity由不可見到可見 此生命周期方法主要是用戶行為導(dǎo)致 Home鍵或者新Activity的back。
  • onStart() Activity正在啟動 即將開始 但是此時前臺不可見 無法進(jìn)行交互操作
  • onResume() 可見 顯示在前臺
  • onPause() 正在停止
  • onStop() 即將停止
  • onDestory() 銷毀回調(diào) 資源回收

需要注意的是在onPause()和onStop()方法中均不可以進(jìn)行耗時的操作,尤其是onPause()方法,因為onPasue()方法執(zhí)行結(jié)束之后新Activity的onResume()才會執(zhí)行,所以不要在onPause()方法中進(jìn)行耗時的操作,否則會影響新打開Activity的速度。

以上有幾個生命周期很有意思,比如: onStart()和onResume(),onPause()和onStop()。從描述上來看大致是差不多的,其實在用法上也大致差不多。那既然這樣,為什么官方還是把它分開了,其實有一個很明顯的區(qū)別:onStart()和onStop()是從Activity可見這個狀況下進(jìn)行回調(diào),而onResume()和onPause是從是否位于前臺的角度來進(jìn)行回調(diào)。

異常情況下的生命周期:
在當(dāng)前Activity異常終止情況下,系統(tǒng)會調(diào)用onSaveInstanceState()來保存當(dāng)前的Activity狀態(tài),然后調(diào)用onRestoreInstanceState()來恢復(fù)。

2. Activity的啟動模式和標(biāo)志位

四種啟動模式:

  • standard 系統(tǒng)默認(rèn) 每次都會創(chuàng)建 不管是否存在
  • singleTop 棧頂復(fù)用模式 如果Activity位于棧頂 不會被重新創(chuàng)建 生命周期方法都不會調(diào)用 但是會調(diào)用- onNewIntent()函數(shù)
  • singleTask 棧內(nèi)復(fù)用模式 一個棧中存在 就不會被重新創(chuàng)建 同樣調(diào)用onNewIntent()函數(shù) 這里需要注意的是:默認(rèn)有clearTop()的效果
  • singleInstance 單實例模式 創(chuàng)建單獨(dú)的任務(wù)棧 后期不會再創(chuàng)建 除非被銷毀

標(biāo)志位:
標(biāo)志位即我們所設(shè)置的Flag,其實相當(dāng)于給Activity設(shè)置了啟動模式;
比如:FLAG_ACTIVITY_NEW_TASK 相當(dāng)于singleTask的啟動模式

3. IntentFilter匹配規(guī)則

我們都只到啟動Activity的方式分為兩種,第一種就是顯示的調(diào)用Activity,那么就要明確匹配包名和類名;第二種方式就是隱式的去調(diào)用,就需要通過IntentFilter來過濾信息:
action: 字符串匹配 Intent信息必須一樣
category: 字符串 Intent信息包含關(guān)系
data:(mimeType和URL)文件類型及訪問的URL

注:Activity的隱式調(diào)用,要先判定此Activity是否存在,不然會報錯,可以通過PackageManager的resolveActivity()或者Intent的resolveActivity()來判斷。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容