安卓機(jī)瘋狂加大內(nèi)存,蘋果卻不以為然,為何?
這實(shí)際上是一個(gè)技術(shù)問題,涉及到 iOS 與安卓兩個(gè)操作系統(tǒng)的設(shè)計(jì)原理。
首先,安卓機(jī)上大內(nèi)存,這是個(gè)中國特色,也就是說只有中國國內(nèi)銷售的安卓機(jī)才會(huì)上這么大的內(nèi)存,海外版的安卓機(jī)主流內(nèi)存基本和蘋果差不了太多。圖我就不貼了,大家可以自己去查一下,華為的 P30,海外版的 128G 硬盤的型號(hào)只配 4G 或 6G 內(nèi)存,而中國版的 P30,64G 硬盤的型號(hào)卻配上了 8G 內(nèi)存;海外版的安卓機(jī),128G 硬盤配 4G 內(nèi)存比比皆是,簡直不要太多,但在國內(nèi),你幾乎找不到一款 128G 硬盤配 4G 內(nèi)存的安卓機(jī)。這樣乍一看好像我們得了便宜,可其實(shí),這是國產(chǎn)安卓生態(tài)的無奈之舉。
先說國內(nèi)安卓機(jī)為什么上大內(nèi)存吧。舉一個(gè)例子,比如我們常用的微信這個(gè) APP,首先你打開微信登錄賬號(hào)后,你手機(jī)上的微信 APP 就會(huì)和騰訊的服務(wù)器保持一個(gè)長久的連接,你發(fā)一條消息給你朋友,這條消息不是直接從你的手機(jī)上發(fā)到他的手機(jī)上的,而是你的手機(jī)將消息發(fā)給了騰訊的服務(wù)器,然后騰訊的服務(wù)器再發(fā)給你朋友。這個(gè)時(shí)候就有一個(gè)問題,如果你朋友手機(jī)上的微信 APP 處在關(guān)閉狀態(tài)下,那么即使騰訊服務(wù)器把消息發(fā)過去了,他也收不到,因?yàn)樗氖謾C(jī)上微信 APP 已經(jīng)完全關(guān)閉了,已經(jīng)和騰訊服務(wù)器斷開連接了,只有當(dāng)他再次打開微信的時(shí)候,連接恢復(fù),他才能收到那條信息。也就是說,想要及時(shí)收到消息,那么微信這個(gè) APP 就不能完全關(guān)閉,需要留下一些線程在后臺(tái)一直保持運(yùn)行,一直和騰訊的服務(wù)器保持接連,這樣一旦收到消息,系統(tǒng)才能及時(shí)啟動(dòng)消息機(jī)制提醒你。
所以,國內(nèi)安卓系統(tǒng)下,每一個(gè) APP,都必須在后臺(tái)(也就是內(nèi)存里)留下一些線程隨時(shí)準(zhǔn)備接收外來信息,也就是說你剛打開手機(jī)還啥都沒干,你手機(jī)上所有 APP 的一部分線程已經(jīng)悄悄啟動(dòng),進(jìn)駐內(nèi)存,而這些后臺(tái)啟動(dòng)的線程是無法關(guān)閉的,因?yàn)槭呛戏ǖ?,關(guān)閉的話用戶就無法及時(shí)收到消息。另外,不要小看這些后臺(tái)線程的數(shù)量,一個(gè) APP 在后臺(tái)里留十幾二十 MB 確實(shí)不多,但 100 個(gè) APP(64G 硬盤的手機(jī)就能裝 100 個(gè) APP)加起來就要吃掉將近 2G 的內(nèi)存!
因此,國內(nèi)安卓機(jī)的內(nèi)存容量必須跟著硬盤容量遞增,硬盤容量越大,能下的 APP 就越多,就越需要更大的內(nèi)存來保證這些 APP 留在后臺(tái)的線程正常運(yùn)行。
再說 iOS,它為啥就不需要大內(nèi)存呢?因?yàn)樘O果有自己的服務(wù)器(谷歌實(shí)際上也有自己的服務(wù)器,但國內(nèi)不能用,下面會(huì)說)。iOS 的這個(gè)系統(tǒng),必須搭配蘋果公司的服務(wù)器才能正常運(yùn)行。每一臺(tái) iOS 設(shè)備在聯(lián)網(wǎng)的時(shí)候,iOS 系統(tǒng)首先會(huì)和蘋果的服務(wù)器建立一個(gè)長連接。
還是微信那個(gè)例子,在 iOS 上,如果微信處在打開狀態(tài)下,那么邏輯還是和上述安卓的一樣,差距是體現(xiàn)在關(guān)閉微信后。如果你 iPhone 上的微信 APP 關(guān)閉了,會(huì)和騰訊的服務(wù)器斷開,而這個(gè)時(shí)候,你朋友發(fā)了一條消息給你,這條消息先發(fā)給了騰訊的服務(wù)器,這時(shí)騰訊服務(wù)器發(fā)現(xiàn)你手機(jī)上的微信 APP 沒有和服務(wù)器建立連接,那么它會(huì)將這條消息轉(zhuǎn)頭發(fā)給蘋果的服務(wù)器,然后蘋果的服務(wù)器收到后會(huì)發(fā)送給你的 iOS 系統(tǒng),系統(tǒng)收到就能及時(shí)做出提醒。這樣實(shí)際上是多了一個(gè)步驟,但帶來的好處是你手機(jī)上的微信 APP 可以完全關(guān)閉,不需要留下多余的線程來接收消息,因?yàn)樘O果的服務(wù)器會(huì)一直保持接收消息,然后將消息發(fā)給手機(jī)系統(tǒng),系統(tǒng)再做出提醒。
這樣一來,蘋果手機(jī)的內(nèi)存就不需要跟著硬盤容量一起遞增,因?yàn)榧词?APP 完全關(guān)閉,也不影響及時(shí)接收消息。再加上 iOS 系統(tǒng)實(shí)際上不支持真正意義上的后臺(tái)運(yùn)行(僅持后臺(tái)聽歌、下載、導(dǎo)航等有限幾個(gè)操作,如果一個(gè) APP 進(jìn)入后臺(tái),10 分鐘內(nèi)沒被換到前臺(tái)來,那么系統(tǒng)就會(huì)將它關(guān)閉,只留下臨死前的一個(gè)截圖,所謂的墓碑機(jī)制),所以蘋果手機(jī)的這些內(nèi)存絕大部分時(shí)間內(nèi)其實(shí)只為一個(gè) APP(當(dāng)前這個(gè))服務(wù),一個(gè) APP 使用 4G 內(nèi)存,真的是綽綽有余,有余到多的不能再多了。
插個(gè)題外話,都說蘋果手機(jī)安全,注重隱私,也有這個(gè)原因,蘋果手機(jī)上的 APP,如果關(guān)閉了,那就是真的全部線程都關(guān)閉了;而安卓,由于每一個(gè) APP 都必須在后臺(tái)留一些線程一直運(yùn)行,有的無良 APP 甚至手機(jī)廠商,就不僅僅會(huì)留下接收消息的線程,還會(huì)留下偷偷開啟攝像頭或者麥克風(fēng)的線程,去收集用戶數(shù)據(jù),而這些后臺(tái)的的線程,由于是系統(tǒng)代碼層面的東西,用戶根本沒可能去關(guān)閉。
最后,說一下海外版安卓機(jī)為什么也不上這么大的內(nèi)存,因?yàn)楹M獍姘沧繖C(jī)可以使用谷歌的服務(wù)器(前段時(shí)間鬧的沸沸揚(yáng)揚(yáng)的安卓停止對(duì)華為授權(quán)事件,實(shí)際上就是谷歌不讓海外版華為連接谷歌的服務(wù)器了),而使用了谷歌的服務(wù)器,推送機(jī)制就變得和 iOS 一樣了,就不需要有 APP 自己的線程留在后臺(tái)了,谷歌的服務(wù)器會(huì)幫 APP 們接收信息。
而由于眾所周知的原因,國內(nèi)安卓用戶是無法連接谷歌的服務(wù)器的,那么,APP 要想及時(shí)接收消息,開發(fā)者也只能使用常駐后臺(tái)這個(gè)方法,而讓 APP 線程常駐在后臺(tái),需要大量的內(nèi)存支持,那國內(nèi)的安卓機(jī)就只好加大內(nèi)存。那么,誰來為這些多出來的內(nèi)存買單呢?羊毛都出在羊身上,當(dāng)然還是用戶,還是消費(fèi)者。這就是我們國內(nèi)安卓用戶的悲催之處,我們不僅要忍受隱私的泄露,還要為這樣的行為買單。
目前,國內(nèi)的 APP 駐留后臺(tái)已經(jīng)把國內(nèi)的整個(gè)安卓生態(tài)搞的烏煙瘴氣、亂七八糟。其實(shí)好多大廠想過解決方案,比如小米推出自己的推送服務(wù),華為也有自己的推送服務(wù),但全都收效甚微。因?yàn)闆]什么開發(fā)者去配合他們,一來因?yàn)殚_發(fā)者適配的話需要一個(gè)廠一個(gè)廠去適配,提升了開發(fā)成本和維護(hù)成本,二來 APP 開發(fā)商也不愿放棄常駐后臺(tái)帶來的利益。
目前比較值得期待的,是安卓推送聯(lián)盟,這個(gè)聯(lián)盟是由工信部牽頭的,運(yùn)行機(jī)制和 iOS 的推送原理差不多,如果能全面鋪開,可以解決上述問題,但這一套現(xiàn)在還在測(cè)試階段,還是個(gè)美好的愿望,日后能不能全面鋪開還是前途未卜。
所以,蘋果不上大內(nèi)存,真不是廚子摳門,因?yàn)闆]必要了,國內(nèi)安卓機(jī) 12G 內(nèi)存都打不過蘋果 4G 內(nèi)存,為什么?因?yàn)?12G 內(nèi)存里,很大一部分是留給國產(chǎn) APP 常駐后臺(tái)用的。
就是這樣。