1、Activity是與用戶進(jìn)行交互的接口盆均、Android系統(tǒng)通過Activity棧的形式來管理Activity塞弊。不在棧的頂端,可能會(huì)被系統(tǒng)銷毀回收泪姨。
2游沿、Activity的四種形態(tài)
- Active:Activity處于棧頂
- Paused:可見但不可交互
- Stopped:不可見
- Killed:系統(tǒng)回收掉
3、Activity生命周期
4肮砾、異常情況下生命周期
Activity異常終止時(shí)(比如橫豎屏切換)會(huì)調(diào)用 onSaveInstanceState() 保存數(shù)據(jù)诀黍,可在onCreate() 和 onRestoreInstanceState() 中拿到保存的數(shù)據(jù)進(jìn)行恢復(fù)。
5仗处、Activity啟動(dòng)模式
- standard
系統(tǒng)默認(rèn)眯勾、每次啟動(dòng)一個(gè)Activity都會(huì)重新創(chuàng)建一個(gè)新的實(shí)例枣宫,依次調(diào)用生命周期。
- singleTop
1吃环、當(dāng)前棧中已有該Activity的實(shí)例并且位于棧頂時(shí)也颤,不會(huì)新建而是復(fù)用棧頂?shù)腁ctivity,并調(diào)用onNewIntent()方法郁轻。
2翅娶、已有該實(shí)例但是不位于棧頂,與standard相同
3好唯、當(dāng)前棧不存在該Activity實(shí)例故觅,與standard相同
- singleTask
首先會(huì)根據(jù)taskAffinity去尋找當(dāng)前是否存在一個(gè)對應(yīng)名字的任務(wù)棧。如果不存在渠啊,則會(huì)創(chuàng)建一個(gè)新的Task输吏,并創(chuàng)建新的Activity實(shí)例加入棧中。
如果存在替蛉,則拿到這個(gè)任務(wù)棧贯溅,查找這個(gè)任務(wù)棧中是否存在該Activity的實(shí)例,如果存在這個(gè)Activity實(shí)例躲查,則會(huì)將這個(gè)Activity之上的所有Activity出棧它浅,并回調(diào)onNewIntent() 方法,如果不存在镣煮,則新建一個(gè)Activity并入棧姐霍。
主要使用場景:應(yīng)用主頁面
- singleInstance
具有全局唯一性,只會(huì)存在一個(gè)實(shí)例典唇。會(huì)獨(dú)自占有一個(gè)task任務(wù)棧镊折。