開機(jī)內(nèi)存占一半,應(yīng)用后臺(tái)殺不死?那些不了解的Android后臺(tái)機(jī)制(安卓開機(jī)運(yùn)行內(nèi)存就占一半)
作者 | Anm718(酷友)
Android 系統(tǒng)長(zhǎng)期存在應(yīng)用后臺(tái)管理機(jī)制。在多數(shù)人的認(rèn)知中,應(yīng)用分前臺(tái)和后臺(tái)。最簡(jiǎn)單的判別方式:顯示界面的應(yīng)用就是前臺(tái)應(yīng)用,在運(yùn)行不顯示界面的應(yīng)用就是后臺(tái)應(yīng)用。
安卓十多年發(fā)展至今,應(yīng)用數(shù)量龐大,實(shí)現(xiàn)的功能各不相同,那么簡(jiǎn)單的后臺(tái)機(jī)制肯定無法滿足需求。本篇圖文詳細(xì)解釋一下 Android 的后臺(tái)管理機(jī)制。具體分三節(jié)。
目錄:
– Android 后臺(tái)機(jī)制的根本
– 內(nèi)存管理:應(yīng)用狀態(tài)分級(jí)、LMK 機(jī)制、與其他系統(tǒng)的區(qū)別。
– 為什么后臺(tái)應(yīng)用關(guān)不掉:應(yīng)用保活、自喚醒、關(guān)聯(lián)啟動(dòng)。
– 斬殺惡性應(yīng)用的利劍:后臺(tái)純凈、切斷喚醒、持劍人 Google 的手段。
一、Android 后臺(tái)管理的根本
安卓?jī)?nèi)存管理方案:
Android 沿用了 Linux 的內(nèi)存管理方案,為低內(nèi)存回收機(jī)制。與開多少就占用多少的 Windows 不同,Android 是你不開應(yīng)用,也會(huì)占用內(nèi)存。在空載狀態(tài)下,Android P 占用下限約為 500mb (大概,我測(cè)試可以正常運(yùn)行),上限為設(shè)備物理內(nèi)存的 1/2,即開機(jī)占用一半內(nèi)存。而安卓應(yīng)用不存在關(guān)閉一說,退出之后仍然會(huì)留在內(nèi)存中。直至剩余內(nèi)存過低,才會(huì)由系統(tǒng)機(jī)制將其殺掉,回收它占用的那部分內(nèi)存。
了解應(yīng)用狀態(tài)的分級(jí):
– foreground 前臺(tái)。設(shè)備當(dāng)前運(yùn)行的應(yīng)用,你打開什么軟件,前臺(tái)應(yīng)用就是什么,很容易理解吧。
– visible 可見。與前臺(tái)類似,同樣可以顯示在屏幕上,讓用戶看到,以及交互操作,如輸入法、浮窗。
– secondary 次級(jí)。后臺(tái)運(yùn)行的服務(wù),通常占用資源不大,但用戶很需要其功能,比如各家系統(tǒng)的云服務(wù)。
– hidden 后臺(tái)。后臺(tái)運(yùn)行的進(jìn)程,在應(yīng)用運(yùn)行時(shí)直接按下 home 鍵,應(yīng)用仍在運(yùn)行。如果應(yīng)用的優(yōu)化沒做好,那么將占用大量資源。
– content_provider 內(nèi)容。與用戶關(guān)系不大,通常感知不強(qiáng)。
– empty 空白。應(yīng)用已經(jīng)停止運(yùn)行,沒有進(jìn)程與服務(wù),只留下一個(gè)緩存,確保下一次打開時(shí)更迅速。
上述六種狀態(tài),越往下,重要性越低,越容易被殺掉。
Android 后臺(tái)的殺手 – Low Memory Killer:
應(yīng)用在后臺(tái)運(yùn)行,固然可以增加啟動(dòng)速度,或便于推送信息,但內(nèi)存大小和電池容量都不是無限的。當(dāng)后臺(tái)一多,就會(huì)拖累性能,降低續(xù)航。系統(tǒng)自然不可能坐以待斃,等著內(nèi)存爆滿死機(jī)。Android 系統(tǒng)使用了的低內(nèi)存殺后臺(tái)機(jī)制 LowMemoryKiller,以下簡(jiǎn)稱 lmk。
kernel lmk 界面
可以看到,lmk 對(duì)每個(gè)應(yīng)用狀態(tài)都有對(duì)應(yīng)數(shù)值。當(dāng)剩余內(nèi)存大小達(dá)到數(shù)值時(shí),lmk 就會(huì)殺掉對(duì)應(yīng)狀態(tài)的應(yīng)用,以釋放內(nèi)存。若殺掉應(yīng)用,剩余內(nèi)存仍然不足,便會(huì)繼續(xù)殺掉上一個(gè)狀態(tài)級(jí)別的應(yīng)用,以此類推。一直殺到前臺(tái)應(yīng)用,這便會(huì)造成正運(yùn)行的應(yīng)用或游戲閃退。當(dāng)然,目前安卓機(jī)動(dòng)輒 4g、8g 內(nèi)存的時(shí)代,能讓 lmk 殺到前臺(tái)的應(yīng)用應(yīng)該不存在了吧,除非是出現(xiàn) bug。
應(yīng)用在后臺(tái)占用的資源:
在固有印象中,安卓后臺(tái)應(yīng)用一多,就會(huì)十分卡頓。因?yàn)閼?yīng)用運(yùn)行是要消耗硬件資源的,不論前臺(tái)和后臺(tái)??赡茉?500mb 內(nèi)存的時(shí)代沒有那么明顯的感知,因?yàn)閮?nèi)存太小,應(yīng)用留不住后臺(tái)。但從安卓機(jī)進(jìn)入了 1g、2g 內(nèi)存的時(shí)代,這個(gè)缺陷就一下子暴露出來了:后臺(tái)殺不死,殺死后自啟動(dòng),一個(gè)應(yīng)用拖好幾條進(jìn)程,一條進(jìn)程又有好幾項(xiàng)服務(wù),堪稱群魔亂舞。此現(xiàn)象持續(xù)了至少六年。
那這些應(yīng)用消耗的是哪些資源呢?看上文的后臺(tái)分級(jí),這些應(yīng)用一般屬于次級(jí)或后臺(tái),與前臺(tái)應(yīng)用一樣運(yùn)行,會(huì)占用 CPU 運(yùn)算資源,數(shù)據(jù)操作會(huì)占用閃存的讀寫資源,這兩項(xiàng)就足以死死卡住設(shè)備,使其無法正常運(yùn)行。這些資源總量是一定的,在當(dāng)時(shí)性能普遍不強(qiáng)時(shí),資源用一點(diǎn)就少一點(diǎn),后臺(tái)占用大了,前臺(tái)自然要卡。
空載:
空負(fù)載
后臺(tái)開啟百度地圖:
后臺(tái)掛百度地圖
此時(shí)已經(jīng)卡到?jīng)]法正常運(yùn)行了,各種動(dòng)畫掉幀。
Android 與其他系統(tǒng)后臺(tái)的區(qū)別:
對(duì)于各個(gè)系統(tǒng)的應(yīng)用,一般可以用兩種狀態(tài)來表示:Android 分為 “運(yùn)行” 和 “停止”,iOS 分為 “前臺(tái)” 和 “凍結(jié)”,Windows 分為 “啟動(dòng)” 和 “關(guān)閉”。
解釋一下:iOS 的特點(diǎn)是凍結(jié)式后臺(tái),即應(yīng)用留后臺(tái)但不運(yùn)行,只有前臺(tái)應(yīng)用能運(yùn)行。這樣可以做到打開應(yīng)用時(shí)秒開,但退入后臺(tái)也不消耗資源,只占用內(nèi)存;Windows 特點(diǎn)是打開哪個(gè)應(yīng)用,哪個(gè)應(yīng)用就運(yùn)行,點(diǎn)擊關(guān)閉就停止運(yùn)行,并清出內(nèi)存。
內(nèi)存占用也是與后臺(tái)有關(guān),舊時(shí) Android 日常會(huì)占用 50%;iOS 內(nèi)存在開機(jī)不久會(huì)爆滿,始終居于 95% 以上;而 Windows 則是應(yīng)用多大,內(nèi)存占用就多大,沒有應(yīng)用時(shí)占用很低。
win 空載占用
還有一個(gè) Windows Phone 系統(tǒng),是 Microsoft 基于 win 為智能手機(jī)設(shè)計(jì)的系統(tǒng),它的特點(diǎn)不是殺死,而是限制,對(duì)后臺(tái)應(yīng)用數(shù)量限制,對(duì)每個(gè)應(yīng)用占用內(nèi)存限制。這種單個(gè)體小,個(gè)體總數(shù)少的限制,是非常簡(jiǎn)單且有效的,逼開發(fā)者不得不優(yōu)化。不愧是你,微軟。
二、為什么后臺(tái)應(yīng)用關(guān)不掉?
有些用戶會(huì)刻意關(guān)閉后臺(tái),以釋放內(nèi)存或增加續(xù)航,但發(fā)現(xiàn)無法關(guān)閉后臺(tái)運(yùn)行的應(yīng)用。這是什么原因呢?來詳細(xì)分析一下后臺(tái)管理手段與應(yīng)用的關(guān)系。首先看一下后臺(tái)界面。
卡片后臺(tái)界面
在這個(gè)界面中,可以展示出你打開過的應(yīng)用,并生成縮略圖。前面說過,安卓應(yīng)用不存在關(guān)閉,退出后應(yīng)用會(huì)進(jìn)入后臺(tái)運(yùn)行。這個(gè)界面,可以手動(dòng)停止后臺(tái)的應(yīng)用進(jìn)程,就是點(diǎn)擊那個(gè) × 號(hào),或在高版本上是滑動(dòng)。但此行為并不等同于強(qiáng)行停止!
這個(gè)界面并不是強(qiáng)制性停止應(yīng)用,而是清理掉應(yīng)用的界面,并通知應(yīng)用,應(yīng)該停止自己的后臺(tái)進(jìn)程了。至于停止哪些服務(wù),就是應(yīng)用自己說了算。舊時(shí)安卓這個(gè)機(jī)制問題真的很大,尤其 Android K-N,和惡意應(yīng)用對(duì)線簡(jiǎn)直被爆錘。當(dāng)時(shí)定制化系統(tǒng)對(duì)這些機(jī)制進(jìn)行了修改,劃掉卡片即強(qiáng)行停止,才能對(duì)惡意應(yīng)用進(jìn)行反擊。
應(yīng)用?;睿?/strong>
應(yīng)用的開發(fā)者為了一些功能運(yùn)行,或是一些利益原因,會(huì)對(duì)應(yīng)用的后臺(tái)進(jìn)程進(jìn)行保護(hù),防止被殺掉,此行為稱為應(yīng)用保活。
常見的保活手段,就是留通知。在通知欄中留一條不可清除的通知,即可實(shí)現(xiàn)避免被殺。即便你在后臺(tái)界面劃掉了卡片,只要這條通知還在,那么這項(xiàng)服務(wù)就在,可以隨時(shí)拉起主進(jìn)程,繼續(xù)運(yùn)行。這樣的應(yīng)用有很多,比如在通知欄里放個(gè)資訊窗口、搜索框,就是這種思路。
酷安后臺(tái)
最直接的保活手段,就是向用戶請(qǐng)求權(quán)限。在定制系統(tǒng)上,通常會(huì)有 “允許應(yīng)用在后臺(tái)運(yùn)行” 權(quán)限,應(yīng)用可以找一個(gè)正當(dāng)?shù)慕杩冢層脩糁鲃?dòng)把這個(gè)權(quán)限打開,就能在后臺(tái)暢通無阻的運(yùn)行了。
除此之外還有一些奇妙操作,比如建立透明懸浮窗,可以直接提高應(yīng)用狀態(tài)分級(jí),就難以被 lmk 殺掉;進(jìn)程守護(hù),一個(gè)應(yīng)用建立幾個(gè)進(jìn)程,有一個(gè)進(jìn)程掉了,立馬由另外一個(gè)進(jìn)程拉起來;還有更強(qiáng)的,以毫秒級(jí)速度不停嘗試?yán)鹱约旱倪M(jìn)程,這種方法甚至可以無視強(qiáng)行停止(只要我啟動(dòng)的夠快,強(qiáng)行停止就關(guān)不掉我),這已經(jīng)是破壞型行為了。
應(yīng)用喚醒:
應(yīng)用會(huì)通過一些方式,在用戶未手動(dòng)打開的情況下自行啟動(dòng),即應(yīng)用喚醒,也稱應(yīng)用自啟動(dòng)。此時(shí)沒有前臺(tái)界面,啟動(dòng)的只是進(jìn)程與服務(wù)。
Android 應(yīng)用開發(fā)時(shí),會(huì)給應(yīng)用加上 BroadcastReceiver (廣播接收器,以接收系統(tǒng)的廣播),以對(duì)一些狀態(tài)作出對(duì)應(yīng)的響應(yīng),比方說此設(shè)備收到電話,系統(tǒng)就會(huì)發(fā)出廣播 “來電話了”,應(yīng)用 “撥號(hào)” 就會(huì)自啟動(dòng),響鈴提醒用戶接聽。存儲(chǔ)空間低于一定量時(shí),系統(tǒng)會(huì)發(fā)廣播,文件管理類應(yīng)用會(huì)提示用戶清理文件以釋放空間。合理使用可以使應(yīng)用極大提升功能性,但不合理使用的話,就是給用戶找麻煩。
百度云自啟
借用知乎老哥的圖。可以看出百度云會(huì)接收?qǐng)D中的廣播,實(shí)現(xiàn)自啟動(dòng)。WiFi 更改、存儲(chǔ)變動(dòng)時(shí)自啟動(dòng)也就罷了,畢竟功能聯(lián)網(wǎng)還要依賴存儲(chǔ),但收發(fā)短信、撥打電話還要啟動(dòng)干什么呢?安裝卸載應(yīng)用時(shí)也啟動(dòng),充電斷電也啟動(dòng),你是多么怕自己的服務(wù)拉不起來?。?/p>
即便殺掉了后臺(tái),沒一會(huì)又自啟了,跟沒殺一樣。
關(guān)聯(lián)啟動(dòng):
應(yīng)用的廣播接收器,不止可以接收系統(tǒng)的廣播,也可以接收其它應(yīng)用的廣播,從而被其他應(yīng)用拉起。
此現(xiàn)象稱為關(guān)聯(lián)啟動(dòng),或鏈?zhǔn)絾?dòng)。關(guān)聯(lián)啟動(dòng)的常見場(chǎng)景:在 “手機(jī)淘寶” 中購買某件商品,選擇付款方式支付寶付款,那么就可以直接拉起 “支付寶” 的應(yīng)用界面,進(jìn)行付款操作。
而不合理的使用場(chǎng)景,對(duì)于長(zhǎng)期的安卓用戶應(yīng)該都深有感知了吧,拉起其他應(yīng)用的后臺(tái)服務(wù),收集用戶數(shù)據(jù),推送廣告。
關(guān)聯(lián)喚醒
可以看到,同一家的應(yīng)用之間都會(huì)自動(dòng)喚醒,保持后臺(tái)活躍。這有什么用嗎?我也不知道啊。
一開始的時(shí)候就是如此,后期此現(xiàn)象愈演愈烈,一些公司推出了關(guān)聯(lián) SDK,只要你接入了此 SDK,有接入相同 SDK 的應(yīng)用啟動(dòng),就會(huì)順帶拉起你的應(yīng)用。鏈?zhǔn)絾?dòng)成為了一種交♂易:“接入我的 SDK 吧,你的應(yīng)用可以享受后臺(tái)殺不掉的待遇,消息直達(dá),數(shù)據(jù)收集無阻礙?!?于是,大量的應(yīng)用開始接入這種 SDK,后臺(tái)是不掉了。
開發(fā)者笑嘻嘻,可苦了用戶,后臺(tái)殺也殺不掉,停止了還能自啟、鏈起。內(nèi)存不大的機(jī)子,在那么多的應(yīng)用下不停的觸發(fā) lmk 殺后臺(tái),剛殺掉就又起來了,陷入死循環(huán),致使負(fù)載居高不下,續(xù)航也是血崩。
三、斬殺惡性應(yīng)用的利劍
對(duì)于那些惡性應(yīng)用,就只看著它們胡作非為、為所欲為嗎?當(dāng)然不行。反擊之戰(zhàn)早已打響,垃圾應(yīng)用們,接招!
斬殺 – 應(yīng)用后臺(tái)進(jìn)程:
后臺(tái)純凈機(jī)制后臺(tái)純凈并不是 Android 官方提出的說法,而是第三方定義的一種應(yīng)用狀態(tài)。即應(yīng)用退出到后臺(tái),不留下任何無用服務(wù) (無用指用戶用不到),全部歸進(jìn)緩存 (即上文分級(jí)中的空白進(jìn)程)。既不拖累系統(tǒng)性能,也能實(shí)現(xiàn)啟動(dòng)時(shí)秒開。
此說法來自于綠色公約,也就是說綠色公約中的應(yīng)用可以做到這一點(diǎn)。但幾年過去,自愿遵守的公約已成為來自 Google 強(qiáng)制的規(guī)定。如你當(dāng)前運(yùn)行的系統(tǒng)為 Android O 及以上,且應(yīng)用目標(biāo) API 在 26 以上,那么該應(yīng)用退出后便可以進(jìn)入緩存,實(shí)現(xiàn)無損保后臺(tái)。
你可以嘗試打開應(yīng)用,使用主頁鍵退出應(yīng)用界面,進(jìn)入系統(tǒng)設(shè)置 – 開發(fā)者選項(xiàng) – 正在運(yùn)行的服務(wù),觀察是否有剛才應(yīng)用的進(jìn)程和服務(wù)。然后點(diǎn)擊右上方的顯示緩存,是否有剛才應(yīng)用的緩存。如果沒有進(jìn)程服務(wù),只留下了一個(gè)百來 mb 大小的緩存進(jìn)程,那么這個(gè)應(yīng)用就大概符合后臺(tái)純凈了。
進(jìn)程
緩存
能看出,我常用的應(yīng)用均支持后臺(tái)純凈。當(dāng)然萬事無絕對(duì),比如一個(gè)音樂播放器,在播放音樂,退出之后肯定要留一條進(jìn)程的,畢竟后臺(tái)還要運(yùn)行的,不能說它不支持后臺(tái)純凈。
啊。。這疼訊,永遠(yuǎn)的
還有一些奇怪的事情,就是內(nèi)存顯示錯(cuò)誤,有時(shí)應(yīng)用占的內(nèi)存會(huì)直接算進(jìn)系統(tǒng)占用里面,不知是邏輯 bug 還是應(yīng)用的奇妙操作,如圖:
淘寶遁入系統(tǒng)
斬殺 – 鏈?zhǔn)絾?dòng):
切斷喚醒為了應(yīng)對(duì)應(yīng)用的自啟動(dòng)和鏈?zhǔn)絾?dòng),在早期的安卓定制系統(tǒng)中,提供了應(yīng)用自啟動(dòng)的開關(guān),由用戶控制自啟動(dòng)。
自啟限制
關(guān)閉此開關(guān),則系統(tǒng)會(huì)屏蔽應(yīng)用的廣播接收,使其無法通過廣播自啟。對(duì)于非深度定制系統(tǒng),并沒有這類限制。如果有 root 權(quán)限,可以使用工具 【My Android Tools】 ,手動(dòng)管理應(yīng)用的各種組件,不但可以關(guān)閉廣播接收器,也能控制應(yīng)用的后臺(tái)服務(wù)。有用不到、但卻在運(yùn)行的服務(wù),可以直接停掉。
mat
如果有 xposed 框架,則可以使用 【應(yīng)用管理 Xposed】 ,功能更多,效果更強(qiáng),操作更簡(jiǎn)單。
斬殺 – 后臺(tái)資源占用
后臺(tái)應(yīng)用,就應(yīng)該有后臺(tái)的樣子。有些應(yīng)用進(jìn)入后臺(tái)還不安分,不停交換數(shù)據(jù),拖慢速度,吃掉大量資源。最過分的是喚醒鎖,使設(shè)備無法休眠。那么目標(biāo)已明確,就是降低它們對(duì)資源的占用。
自安卓 8 開始,系統(tǒng)對(duì)于后臺(tái)應(yīng)用進(jìn)行了一次整治。如果系統(tǒng)是安卓 8,且應(yīng)用的目標(biāo) API 是 26 及以上,那么這個(gè)應(yīng)用會(huì)自動(dòng)實(shí)現(xiàn)后臺(tái)純凈。若應(yīng)用 API 低于 26,則可以到 開發(fā)者選項(xiàng) – 后臺(tái)檢查 中手動(dòng)限制,若不需要這個(gè)應(yīng)用的后臺(tái),則關(guān)閉即可。
后臺(tái)檢查
到了安卓 9,限后臺(tái)就更狠了。智能待機(jī)上線,可根據(jù)應(yīng)用使用頻率、使用時(shí)間進(jìn)行自動(dòng)化管理,分活躍、工作、常用、極少這幾個(gè)等級(jí),為后臺(tái)分配不同的資源。這也是為什么用過一段時(shí)間的機(jī)子,續(xù)航比新機(jī)還長(zhǎng)的原因,就是機(jī)器學(xué)習(xí)記錄了你的使用習(xí)慣。
如果是不規(guī)范應(yīng)用,遲遲不適配新特性呢?Google 還有更絕的招式。在 Android P 上還提供了后臺(tái)限制功能,若應(yīng)用的 API 較低,且在后臺(tái)有大量進(jìn)程,或長(zhǎng)時(shí)間控制喚醒鎖,系統(tǒng)將會(huì)在通知欄將應(yīng)用列出,提示為:** 應(yīng)用正在后臺(tái)耗電 之類的,用戶可以對(duì)其進(jìn)行一鍵限制。這個(gè)限制可不是前文所說的限制分配資源,而是直接禁止應(yīng)用的一切后臺(tái),禁止應(yīng)用的一切響應(yīng),退出即停止。
此限制也可由用戶手動(dòng)打開,在設(shè)置 – 應(yīng)用 – 查看全部應(yīng)用,找到要限制的應(yīng)用,高級(jí) – 電池 – 后臺(tái)限制,點(diǎn)擊限制,世界都清凈了。
另一種方法: 【App Ops】 中更改應(yīng)用權(quán)限,“在后臺(tái)運(yùn)行” 這個(gè)權(quán)限在安卓 9 是這樣的。
嚴(yán)格限制就是上面的限制應(yīng)用。API 在 26 及以上的應(yīng)用默認(rèn)為基礎(chǔ)限制,低于 26 的應(yīng)用默認(rèn)為不限制,用戶都可以手動(dòng)更改為嚴(yán)格限制。
能看出來,越是原生系統(tǒng),干擾越少,不存在白名單,越能體現(xiàn)出開發(fā)者的優(yōu)化水平。優(yōu)化越垃圾,在原生 ROM 上越是掛不住后臺(tái),推不出消息。比如我的機(jī)子,就從來收不到酷安的消息通知 (whml
斬殺 – 惡性應(yīng)用最后的倔強(qiáng):Google 的手段
從這幾次底層的大改動(dòng)可以看出,Google 已經(jīng)要大力整治這些惡性應(yīng)用了,可以說是無差別打擊,只要不規(guī)范,就要受波及。
后臺(tái)限制,就是你能規(guī)范起來,那你可以在后臺(tái)合理運(yùn)行,不影響功能,用戶的體驗(yàn)也不會(huì)受損,你好我也好。如果就是頭鐵,就想跟系統(tǒng)比劃比劃,那好,后臺(tái)直接別運(yùn)行了,你一個(gè)功能都實(shí)現(xiàn)不了。
Play 商店有著強(qiáng)制要求,目標(biāo) API 必須在 26 以上,且很快就要成為 28。這就意味著應(yīng)用想不規(guī)范都不行,API 越高,應(yīng)用受約束越多。不提升 API?也行,我不會(huì)給你下架,但我會(huì)禁止你發(fā)布更新。
如果你能做到永遠(yuǎn)不更新,那你可以這么做。如果不上架 play 商店呢?畢竟 Google 管不到第三方分發(fā)渠道。沒關(guān)系,我不能禁止你分發(fā),但我能干擾你運(yùn)行。已知 API 低于 23,運(yùn)行時(shí)會(huì)提示風(fēng)險(xiǎn)應(yīng)用,謹(jǐn)慎使用。API 遠(yuǎn)低于當(dāng)前系統(tǒng),為了兼容運(yùn)行,我會(huì)降低你的一些性能。
還不能搶占國(guó)際市場(chǎng),完全得不償失啊!
文末的閑聊
總有人抱怨安卓生態(tài)太差,跟競(jìng)爭(zhēng)者 iOS 相比落后太多,這樣比較就有失公允了。想想 iOS 的出身,蘋果早在上個(gè)世紀(jì)就設(shè)計(jì)了 mac 操作系統(tǒng),針對(duì)優(yōu)化十幾年,積累了大量經(jīng)驗(yàn),并有了一定的生態(tài)基礎(chǔ),設(shè)計(jì) iOS 系統(tǒng)自然十分輕松,打好 iOS 生態(tài)也沒啥壓力。
反觀 Android,一個(gè) Linux 內(nèi)核,從零開始制作系統(tǒng),且最開始還不是為智能手機(jī)設(shè)計(jì)的。這樣的一個(gè)存在,經(jīng)歷了幾年發(fā)展,體量竟是完全壓著 iOS 打,應(yīng)用數(shù)量多于 iOS,市場(chǎng)占有量更是 iOS 的數(shù)倍。
如果這樣還不能理解,再看看 Windows,發(fā)展數(shù)十年,生態(tài)依舊稀爛。
權(quán)限管理混亂、uwp 生態(tài)半殘。這樣是不是就感覺到 Android 的強(qiáng)大了?
– 問:如何正確查看剩余內(nèi)存
– 答:設(shè)置 – 開發(fā)者選項(xiàng) – 正在運(yùn)行的服務(wù),點(diǎn)擊右上方的 “顯示緩存進(jìn)程”,即可查看真實(shí)剩余內(nèi)存。剩余內(nèi)存大小一般在 lmk 的最大值再多一點(diǎn)。通常是幾百 mb
– 問:我就是不想讓應(yīng)用留后臺(tái),就想看到剩余內(nèi)存大大的
– 答:設(shè)置 – 開發(fā)者選項(xiàng) 拉到底,后臺(tái)進(jìn)程限制,改為不允許后臺(tái)進(jìn)程。簡(jiǎn)單概括:剩余極大,體驗(yàn)極差。
– 問:現(xiàn)在手機(jī)內(nèi)存到底幾 g 合適?
– 答:要我說,3g 勉強(qiáng),4g 足矣,6g 有余,8g 巔峰。12g 16g?方向錯(cuò)了。廠商不想著優(yōu)化好,凈想著比友商參數(shù)好看,成本壓不下來,最后用戶買旗艦機(jī)還要提高預(yù)算。
– 問:文章太長(zhǎng)懶得看,給總結(jié)一下
– 答:殺后臺(tái)只有 lmk 機(jī)制 和 用戶手動(dòng)停止。安裝應(yīng)用 API 越高越好,剩余內(nèi)存越少越好。至于優(yōu)化,自己爬回去看完。
有人說我寫的圖文看不懂,我盡力去修改了,可還是哪里不對(duì)勁。對(duì)于酷安幾千粉的大佬,這些應(yīng)該是基礎(chǔ)了吧,沒講的必要。對(duì)于剛?cè)氚驳男“祝赡荛_頭就看不懂了 (我太難了
圖文寫得有些混亂,這排版做的也挺拉跨,見諒。例行要評(píng)論。
強(qiáng)調(diào)版權(quán):本圖文禁止今日頭條等營(yíng)銷媒體轉(zhuǎn)載。如要引用文中語句或段落,請(qǐng)注明原作者 Anm718
- 文章為作者本人觀點(diǎn),不代表酷安立場(chǎng)