iOS 應用狀態(tài)詳解

iOS 與其他操作系統(tǒng)有很多不同,當 App 不在當前運行時狈蚤,可以使用的資源特別有限寄纵。

雖說 App 傳統(tǒng)上講只有兩種狀態(tài)祟同,前臺和后臺随珠。但是這種說法是不太清晰的。

如果要清楚的講明白 App 在不同狀態(tài)下的異同點,那么可以從三個維度去看:

  • 是否可見。App 是否顯示在屏幕上
  • 能不能接收事件漂问,比如觸摸、搖晃手機等
  • 能不能執(zhí)行代碼女揭。這個是我們比較關(guān)心的

App 的 5 中狀態(tài)

一個 App 蚤假,不管是處于什么情況下,總共的狀態(tài)有五種吧兔,分別是:

  • 沒有運行狀態(tài)
  • 活躍
  • 不活躍
  • 后臺運行
  • 暫停運行

后面會詳細的講解某個狀態(tài)以及狀態(tài)之間的轉(zhuǎn)換磷仰。

非運行狀態(tài)

很多 App 都是這個狀態(tài),在此狀態(tài)下境蔼,設(shè)備的 RAM 中沒有加載該 App 的任何代碼芒划。

App 會長期地處于該中狀態(tài)。在這種狀態(tài)下欧穴,App 肯定是不會顯示在屏幕上的,并且也不能接受事件泵殴,當然也不能執(zhí)行代碼涮帘。簡單的理解為死掉的即可。

活躍狀態(tài)

當 App 在運行時笑诅,就是此種狀態(tài)调缨。

此時 App 可以接收事件疮鲫、運行代碼、顯示內(nèi)容弦叶。這種狀態(tài)即平時講的前臺運行俊犯。

非活躍狀態(tài)

App 在某些情況下,會進入到該狀態(tài)伤哺。

在這種狀態(tài)下燕侠,App 的內(nèi)容有顯示在屏幕上,并且能夠執(zhí)行代碼立莉,但是無法接收事件绢彤。

App 一般在下列情況下,會進入這個狀態(tài):

iOS 設(shè)備接收到 短信蜓耻、電話茫舶、通知等,也就是說對于用戶講刹淌,App 本身不是第一個被關(guān)注的內(nèi)容饶氏。

這種情況下,App 的內(nèi)容也顯示在屏幕上有勾,以一種模態(tài)的形式展現(xiàn)疹启。

后臺運行

當用戶使用 Home 鍵或者其他方式切換到另一個 App 或進入桌面后。App 將進入后臺運行模式柠衅。

無法顯示內(nèi)容皮仁,無法接收事件,但是能夠執(zhí)行代碼菲宴〈恚可執(zhí)行代碼的時間有限制。

一般來說喝峦,App 在后臺運行這個狀態(tài)可以長達 10 秒势誊,然后就會被系統(tǒng)調(diào)整到下一個狀態(tài),暫停狀態(tài)

暫停狀態(tài)

暫停狀態(tài)是 App 最多一個一個狀態(tài)谣蠢,表示 App 的一些相關(guān)數(shù)據(jù)仍存在于內(nèi)存中粟耻,但是 App 被懸掛起來,相當于 App 當時的狀態(tài)被封停了眉踱。

在這個狀態(tài)下挤忙,App 可以迅速的返回到活躍狀態(tài)。

如果長期處于這個狀態(tài)谈喳,并且系統(tǒng)在內(nèi)存不夠用時册烈,會將處于暫停狀態(tài)的 App 徹底殺死,轉(zhuǎn)換到非運行狀態(tài)婿禽。

用戶也可以通過手動殺死的方式赏僧,將 App 直接置于該種狀態(tài)大猛。

常見的狀態(tài)轉(zhuǎn)換

狀態(tài)之間是可以相互轉(zhuǎn)換的,下面簡述幾種常見的方式淀零。

當一個 App 在非運行狀態(tài)時挽绩,用戶可以通過點擊 App 的 Icon 或者 App 的通知來打開一個 App。

需要注意的是驾中,即使 silent 通知唉堪,在這種狀態(tài)下也是無法喚醒 App 的。

然后 App 進入到活躍狀態(tài)哀卫。

當用戶在使用 App 的過程中巨坊,會發(fā)生一些事件,然后 App 會進入非活躍狀態(tài)此改。比如:

收到一條短信趾撵、來電時。
收到一個到期的提醒事項時共啃。
收到一個通知占调,并且該通知是屬于那種彈出模式時。
用戶雙擊 Home 鍵移剪,進入到 App 切換界面究珊。

用戶一般不會在這個狀態(tài)下停留很久的時間,當阻礙 App 成為用戶第一焦點的其他消失或被用戶處理后纵苛,App 馬上恢復到活躍狀態(tài)剿涮。

用戶摁下 Home 鍵或者切換到別的 App 時,App 將進入到后臺運行狀態(tài)攻人,在這種狀態(tài)下取试,只能在有限的時間內(nèi)做一些簡單的工作,然后 App 將會休眠怀吻,進入到暫停狀態(tài)瞬浓。

在暫停狀態(tài)下,App 是什么都干不了的蓬坡,只能等待用戶主動喚醒或者 silent 通知猿棉。

休眠的 App 在收到 silent 通知時,將會進入后臺狀態(tài)屑咳,又可以在有限的時間內(nèi)做一些工作萨赁。

如果使用新聞類 App ,或者系統(tǒng)的郵箱服務時,可以發(fā)現(xiàn),有時候 App 明明沒有被打開過,但是在打開時,內(nèi)容已經(jīng)做了更新。
這里就用到了 silent 推送兆龙,App 接收到 silent 推送然后進入后臺運行模式杖爽,做網(wǎng)絡請求,得到數(shù)據(jù),然后更新 model掂林。這樣子用戶在下次打開 App 時,將會看到已經(jīng)更新好的數(shù)據(jù)坝橡,而不是再去做網(wǎng)絡請求泻帮,這樣子很好的提升了用戶體驗。

當 App 在休眠狀態(tài)太久计寇,并且更多的 App 進入到休眠狀態(tài)時锣杂,系統(tǒng)的內(nèi)容將不夠用,因為 App 在休眠時番宁,為了能夠快速的將其激活元莫,是將其放在內(nèi)存中的。

這樣子蝶押,用戶就感覺好像使用的 App 沒有被關(guān)閉踱蠢,一直在運行。

內(nèi)存不夠用時棋电,休眠時間比較長的 App 會被清退出內(nèi)存茎截,進入到非運行狀態(tài)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末赶盔,一起剝皮案震驚了整個濱河市企锌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌于未,老刑警劉巖撕攒,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異烘浦,居然都是意外死亡抖坪,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門谎倔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來柳击,“玉大人,你說我怎么就攤上這事片习“齐龋” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵藕咏,是天一觀的道長状知。 經(jīng)常有香客問我,道長孽查,這世上最難降的妖魔是什么饥悴? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上西设,老公的妹妹穿的比我還像新娘瓣铣。我一直安慰自己,他們只是感情好贷揽,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布棠笑。 她就那樣靜靜地躺著,像睡著了一般禽绪。 火紅的嫁衣襯著肌膚如雪蓖救。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天印屁,我揣著相機與錄音循捺,去河邊找鬼。 笑死雄人,一個胖子當著我的面吹牛从橘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播柠衍,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼洋满,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了珍坊?” 一聲冷哼從身側(cè)響起牺勾,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎阵漏,沒想到半個月后驻民,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡履怯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年回还,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片叹洲。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡柠硕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出运提,到底是詐尸還是另有隱情蝗柔,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布民泵,位于F島的核電站癣丧,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏栈妆。R本人自食惡果不足惜胁编,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一厢钧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧嬉橙,春花似錦早直、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至拾给,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間兔沃,已是汗流浹背蒋得。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留乒疏,地道東北人额衙。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像怕吴,于是被迫代替她去往敵國和親窍侧。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一:App的不同狀態(tài) 對于iOS app 來說转绷,知道app當前的狀態(tài)是至關(guān)重要的伟件,因為iOS對系統(tǒng)資源有著相當嚴格...
    獻國閱讀 1,601評論 0 0
  • 自從古老的iOS4以來,當用戶點擊home建的時候,你可以使你的APP們在內(nèi)存中處于suspended(掛起)狀態(tài)...
    木易林1閱讀 3,144評論 1 4
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,185評論 25 707
  • 一、接入指南 先引入編譯需要的Framework: AudioToolbox.framework AVFounda...
    超越時空的思念_8a22閱讀 502評論 0 1
  • 遠程調(diào)用(RPC) ps: 使用pika以前的筆記中议经,已經(jīng)知道如何使用工作隊列斧账,在多個工作者Worker中分發(fā)耗時...
    嘿嘿_小于同學閱讀 361評論 0 2