為什麼 iPhone 一般不會內存不足,而 Android 很容易出現?
術業有專攻,並非人人都是程序員,所以特意為不清楚Receiver為何物的朋友在本回答最底部留了一些通俗易懂的介紹,不明白的可以先看看底部,明白的看到底下可以直接跳過。(2014/10/25頂部添加)
老實說我反對目前在第一位 @疏樓 的意見,而且毫不匿的表示,我踩了。
誠然,硬體更新換代是必然的,但這不是全部,APP開發商的良心,以及你自己的使用習慣都影響著你手機卡的狀況。
在這個少部分安卓APP為用戶著想,大部分流氓的時代,如果你習慣於人家說什麼APP好你就裝,裝完也不管自己的利用效率留在手機里,再加上我原文里說的情況仔細想想,與硬體有關係么,有三五個就直接可以卡爆手機了!
見過太多裝APP哐哐哐,半年都不卸載一個的,你以為你不點APP就不打開么?這樣的人我見了真不少!就像我吐槽的 1024PB內存都沒用!
各廠旗艦配置機每每都能掏光你們的錢,就是因為 @疏樓 所提出來的這種思路!
好好想想吧,塞班時代靠著600Mhz的單核的硬體不照樣滿足了現在大部分的功能需求(拋開界面和用戶體驗不談)?我們現在呢?拿著號稱「真八核」的機器還嫌不夠?這到底是誰的罪?
==================9月24日更新,以下是原文=========================
一方面有系統設計上的不同的問題,另一點也和安卓開源以及國內的環境有關。
國外的一些優秀APP在國內基本沒法用,而國內的不管是優秀的APP還是山寨國外創意的APP,均以搶佔市場為主導,其次才是想怎麼更好的服務客戶。於是,如果我們拿一個國人正常用的手機(也就是正常使用下裝了國人常用APP的手機),並使用工具查看和對比一下常用國產APP和國外優秀APP在系統里留下的 Receiver,就知道了為什麼安卓手機無論怎麼換更好的還是容易卡了。
拿看視頻用的APP來說:
Youtube默認會在如下幾個情況自動啟動:
- 開機時
- 系統語言切換後
- 系統賬戶改變後
也就是說,一般情況Youtube會隨系統自動啟動,但是你Kill了進程之後,他就不再會啟動占內存了,除非你改了系統賬戶或系統語言。
再來看看我們的國產的某知名視頻站的APP的Receiver怎麼寫的,我就不點名了,省得有人說我黑誰,其他家也沒好哪去,都半斤八兩。
- 開機時
- 網路改變時(2G網路、3G網路和Wi-fi之間互轉)
- 安裝了其他的APP時
- 卸載了APP時
- 某APP被覆蓋時
- 用戶喚醒機器時
如果你裝了這麼個APP,先不說寫得好寫的爛,光這些動作都能導致該APP啟動,還不足夠噁心么,不改變Receiver的話,無論系統自帶殺進程規則,還是自己裝個手動釋放內存的程序,完全都殺不掉!!!幾-乎-等-於永遠常駐內存!!!
這裡只是舉個例子,而國產APP為了保持佔有量和可以隨時推送一些對用戶根本沒用的信息,大部分都或多或少的加了非常噁心的Receiver。
說到這自己都有點火了,我安裝、卸載和和更新APP,我網路狀態改變了關你個看視頻的程序屁事!該想不起來用你還是不用你!而且這不是一個或一類APP的所作所為,而是普遍存在於國產APP里!!
所以如果你國產APP裝的多,那麼安卓手機卡爆那是很正常的事!他們都不想被殺啊!現在知道為什麼很多人的手機裝了一鍵殺進程,殺了之後反而手機狂卡2分鐘的原因了,不死屬性啊,集體殺死後集體復活消耗的資源......接著內存還是占那麼多。
真的是手機不夠好么?事實上你在天朝,買個1024PB運存的手機都沒用。
國產APP還常見的奇葩Receiver:
- SD卡狀態改變(分別為彈出,插入,掛載等)
- 耳機狀態改變(插入或拔出)
- 文件下載完成
- 文件下載通知點擊後
- Wi-FI掃描SSID完成後
- (想不起來待補充)
===================2014/9/26 下方為更新內容===================
感謝 @pansz 的回答中的補充說明以及對我的贊同!同時我也贊同安卓需更需要增加內存的觀點。
一點不得不承認,我們覺得安卓需要增加內存,是在我們對系統了解到一定程度的基礎上,覺得有些優秀軟體或用的上的APP它們體積龐大、占內存極多,當我們又不得不同意這種軟體的Receiver自啟動配置是為了提高用戶體驗而設定的,希望他們存在於手機(經常用得著不想刪),也不想更改其自起配置。這種APP總有會那麼幾個的,只好忍痛禁了Receiver,自行犧牲了用戶體驗。所以我們盼望內存再大一些比較好。
但對於對系統不是很了解的用戶,由於曾經在某手機論壇混的名聲很響,我接觸了不少,並且也幫他們解決過不少問題。
在對他們手機使用情況的觀察里:- 他們不怎麼願意去了解系統,其實按常理來說也真沒必要去了解,手機買來直接用,他們又不是開發者。
- 對於APP,大多數人不怎麼在乎利用率,市場(官方、非官方都算)推薦一些好APP,別人說哪個APP好,甚至路邊廣告上,超市廣告上的一個下載的二維碼,他們都願意嘗試下載。之後很長一段時間,這個APP極大可能淹沒在圖標堆里被忘卻,可在頻繁的自啟動。
- 商家會拿一些消息吸引用戶,導致用戶在卸載某APP的時候猶豫了,甚至有時候沒有這些誘惑,不少用戶都會想「將來某個時候沒準還用的到」甚至「萬一哪天我無聊在地鐵里想玩這個爛遊戲呢?」。於是清理無用APP時也不夠殺伐決斷。
所以我想補充一下,如果廣大用戶不改變自己的使用習慣,果斷分清低使用率APP並卸載,內存大了,receiver亂象沒變,大部分人依然可能繼續卡。而且無良APP開發商也不是省油燈,成天增加一些跟初衷無關的功能,每每升級APP搞得越來越大。(1024PB的吐槽。。。咳咳)
所以:
這是我個人第一個破百贊且成為首貼的回答,而從來不知什麼是羞澀的我,下面的文字我毫不掩飾的說,我要借一下百贊和第一位的影響力了!╮(╯▽╰)╭。
我希望無論新看到的還是回來看更新的朋友們(對系統了解夠深的除外)。如果你們真想在這個問題里學到什麼,讓手機不卡,不妨把下面幾條做到:
- 使用率低的APP果斷卸載,我個人對其判定是,2周內一次都沒點過的APP,你可以給根據你的情況設定個一個標準。
- 有更好替代品的,就不要用APP。比如某超市的APP帶電子會員卡功能,結果收款台還沒有能掃彩色液晶屏的是掃描槍,需要你報卡號!你還留著他幹嘛?錢包里放個會員卡條碼的掃描件都比裝手機里好!再比如說,對我自己手機看書真心覺得不舒服,去年買了Kindle之後,手機裡面看書軟體一律刪,沒有什麼留著以備後患的。
- 如果有足夠的知識底子,花時間了解下自己APP的全部功能,以及receiver的運作機制。然後下幾個相應的軟體,把你留存的APP的自動啟動合理的管理一下,並養成一批軟體更新後記著再回去看看!
- 至於用那些APP管理,我個人的習慣比較老,Autorun Manger用慣了就沒換過也沒注意過新的,搜索了一下大家提的綠色守護,界面清晰明了全中文,應該比較適合大家使用!另外你還需要一個一鍵殺進程的APP,這類的很多,我依然很老套的在用System Panel,只因為他沒有多餘的功能,我不推薦大家用這麼老的東西,但是希望大家選擇的時候本著一個目標:我要方便的殺進程,所以這個APP最好只有這功能,帶什麼殺毒清理垃圾等附加功能的全部不要。
以上4點可能會耗費一些時間和精力,而且讓人覺得麻煩,但是想想處理之後手機打個電話再也無需等半天才開始撥號,不會切到桌面黑屏半天,手機也省電了,續航時間也長了 ,不發熱了,還是值得的,不說老機器還能多用幾年,但至少會舒服很多。
當然這些都做到了,手機還是卡,那的確該換手機了。
====================下文於2014/9/30更新=========================
我在第一次回答的時候,正文第一句就提出了和「國內的環境有關」,寫出這句話當時雖然也涵蓋了APP開發商的問題,但我當時最主要的意思,是想表達網路不太通暢的問題。
直到 @hai wang在下方評論了你忽略了一點,安卓系統的推送很渣
之後,我覺得我需要好好的補充說明一下「網路不太通暢」和「谷歌退出中國」這兩件事情給我們手機帶來了什麼影響。
影響其一,我上面說了很多,相信大家也明白,很多國外優秀的APP我們無法使用,只能使用國內模仿的「山寨版」,這指的諸如只能發140個字的那個玩意、視頻客戶端、模仿非死不可的社交網站、亂七八糟的日曆、各種國產市場等等任何核心功能並非原創並且用於填補國內欠缺的替代產物,無所謂公司規模大與小,因為這個原因他們更關注在這個「我能模仿,那麼其他人也能模仿,且原創老大還不在」的環境下的競爭力,而不會了解核心功能的靈魂,就算了解了也有「那也是原作者的初衷」與我無關的思路。所以流氓起來很正常!╮(╯_╰)╭
影響其二則是我要補充的重點:
安卓其實是有跟蘋果類似的推送機制的!谷歌並不傻,放著好好的節省資源的統一推送服務不用,讓其他軟體都在後台占著等Push?別說谷歌了,知乎上隨便拉個有經驗的程序員也不會這麼干!
可為什麼國產程序仍愛占著後台呢?答案也很簡單!
蘋果的APPLE ID在「區域網內」大家幾乎沒有什麼阻礙就能登陸,可Google Account登陸的上去登陸不上去我都不想說,買個國行手機登陸組件都會被徹底閹割掉,你指望谷歌的消息推送服務怎麼給你推?
我這裡不是為國產APP開脫,因為很多APP的消息推送瘋狂且無節操!我僅僅是為安卓開脫,安卓其實做的很好的,不過有區域網在,大多數人無法享受到罷了!
(純娛樂性吐槽下:配合「換手機」的思維方式,區域網內無谷歌也是個拉動內需的好政策啊,萬萬歲!「)
想更多的了解安卓的推送方式,這裡有條博客!一般人光看圖不管專業名詞也能懂的。
Android實現推送方式解決方案
============2014/10/5介紹資料追加(今天是老爸生日,生日快樂)=============
十一假期難得悠閑點,這回答也隨著追加也寫越長,同時也感謝大家的贊同。
在最近的評論中,發現有些答友並不理解Receiver為何物,或者對僅因為我的描述對Receiver只有個猜測的印象,比如 @Bob Chen 問道:既然receiver這麼糟糕,谷歌為啥不取消這個功能?
沒關係,誰也沒要求大家都是程序員出身,在這裡做個通俗易懂的小介紹吧:
Receiver 顧名思義他是個「接收器」,負責傳遞系統接收到的任何變化,並且在安卓系統里起著核心作用,並不是功能,也不是個程序,他是安卓的重要組成部分。
通俗一點的說,儘管功能不盡相同,但安卓里的Receiver的地位和Windows的註冊表的地位類似,曾經Win95-XP時代,註冊表殘留垃圾過多拖慢系統加上常碰到一些惡意修改註冊表的事情,清理和修復很多人經常做,我還真碰到過有人問我「為什麼Windows不取消註冊表?」
而對安卓Receiver和Windows註冊表給用戶帶來的麻煩,都能歸結一句話「操作系統真心無罪,作惡的是其他人!」
對於註冊表,如果你不了解,這裡有個百度經驗和另一個知乎問題可供了解。
註冊表的主要功能(百度經驗)
Windows 為什麼要有註冊表而 Unix 就不需要?(知乎)
而對於Receiver,下面舉幾個簡單、重要、不作惡且常見的應用方式,你就知道他都接收什麼,且為什麼必不可缺了。
(個人沒開發過安卓APP,了解只算半桶水,也許有些在編寫的時候並不是這樣,但大體機制是不變的,至少下面兩大塊里的3號例子都沒什麼問題。)
一、除了通知系統啟動某程序以外,Receiver還廣泛應用於程序的控制和自動操作上,簡單的幾個誰都知道的例子:
1)很多人都知道安卓的系統界面也算是一個APP,玩過修改系統界面的都恐怕都反編譯過/system/SystemUI.apk,網上反編譯教程也一大把。幾乎所有的安卓機都是按下開機鍵鎖屏,再按喚醒,長按彈出「關機選項」,這些動作全部都由Receiver接收後通知給SystemUI.apk,然後程序做出反應。想想看吧,如果沒了Receiver,你連關屏幕和關機都沒法關了,如果自動休眠你也沒法喚醒了。
2)和上面同樣道理,音量+-鍵在系統界面的操作上也是一樣的,而且換個APP功能還能變化,比如很多手機的相機功能打開後,音量+-鍵自然而然的當成了變焦用鍵(拉近拉遠),這同樣是Receiver的功勞。記得某些看書軟體還能用音量鍵翻頁,也是一個道理。對系統來說,那只是「按鍵1」「按鍵2」「按鍵3」之類,誰也沒規定非得那個是什麼功能。
3)再讓我們說說上面很多人覺得難以接受的耳機插入插孔或者拔出的系統Receiver吧,如果把這個用來後台啟動程序,還是不相干的程序,這自然噁心。但不知大家有沒有想過,大多數機型的自帶音樂播放器,當你聽音樂的時候耳機插入,為什麼自動從功放變成了耳機播放,這還是Receiver的功勞,接收到變化,然後通知APP改變。
二、用來啟動程序也不是全作惡的!
1)先說個手機最基本的功能,我們的收到簡訊或者別人打過來打電話,要是簡訊(通常是/system/app/message.apk)或者電話(通常是/system/app/phone.apk)程序未啟動和之前被殺了怎麼辦?總不能電話鈴都不響一聲吧,他們怎麼啟動?當然是Receiver。
(不太了解安卓的答友有些可能以為簡訊、電話、相機等是手機的「功能」,實際上他們也都是一個個APP,系統界面都是個略特殊的APK文件,何況這些功能?折騰的多的答友都清楚如果這些功能覺得原廠不夠強大,事實上都能找到替換原廠的好程序,我自己就沒在用原廠的簡訊程序,因為原廠沒法自定義個別聯繫人的簡訊鈴聲╮(╯_╰)╭。)
2)上面說到相機了,那麼這裡說個幾乎所有擁有相機鍵的手機都有的功能,哪怕手機休眠,只要你長按相機鍵,那麼相機APP會自動開啟,同樣這還是Receiver的功勞。
3)同樣,關注「卡」這個問題的童鞋一般都會裝過一兩種清理軟體吧?也該遇到過一些清理軟體每每自己卸載了某APP後通知你「某個程序剛被卸載,還有殘留的文件,是否清理?」。清理程序怎麼知道的?當然還是Receiver,是否是善用我不評價,但是至少還合理。類似應用還有幫你攔截垃圾簡訊電話的,插了耳機啟動音樂播放器的,裝了新APP或覆蓋了APP幫你查毒的,也至少不算作惡吧。但我正文里那個例子用於視頻軟體因卸載APP自啟動,你說卸載關你個看視頻的軟體吊事?
簡單的就把Receiver介紹到這裡,其實Receiver還有很多用途,而且APP自己也可以跟系統註冊任何形式的Receiver。其實上真正意義上的系統自帶的其實沒幾個,因為大部分基礎功能都是APK來實現的,不算在系統內。
看到這裡大家應該明白,Receiver相當於「安卓的神經」,無法缺去除,去除了就成「植物人」了。善用和惡用與安卓沒關係,就算是國產善意的編寫,也因為谷歌賬戶沒法登陸甚至閹割,正常的消息推送機制無法運作,不得不增加一些國外軟體不需要的Receiver來保持啟動,更何況一些流氓開發者巨頭帶頭根本不管不顧用戶,所以我們只能用著這樣的APP並且自己想辦法解決卡 的問題。首帖說的是對的。
我來簡化一下解釋:這個事情的存在,就歸功於萬惡的 receiver。
無論是 iOS 還是 android,在內存不足的時候,都會殺掉後台的進程,這一點是沒有區別的。他們的內存管理機制沒有本質區別,手動清理內存通常並不需要。
有區別的是進程被殺掉之後:android 裡面有各種各樣的 receiver 導致進程再度啟動(除非你安裝了特定的軟體修改系統機制,禁止該進程獲得 receiver 通知),而 iOS 裡面能導致被殺掉的後台進程再啟動的方法很有限。——這使得 iOS 裡面殺掉後台進程真的能夠騰出內存,而 android 裡面殺掉後台進程之後,那些流氓軟體會再度的啟動,導致你的內存根本無法有效釋放掉(安裝某些特定的軟體可以一定程度上解決這個問題)。
實際上隨著時間的推移 iOS 裡面無節操的軟體也逐漸開始多了起來,只不過從總的數量和比例來看,iOS 裡面後台能啟動的軟體比 android 裡面還是少得多。——也許將來 iOS 的流氓軟體也會多到今天 android 的地步,誰知道呢?但就目前而言,iOS 還是會略順暢一些。因為它內存不足的時候真的能幹掉後台的應用。——而 android,它也想幹掉後台應用騰出內存啊,但那些流氓軟體不想被幹掉啊啊啊。
android 配備更大的內存是有必要的,因為它可以讓這些進程根本不用被殺掉,那麼他們根本就不用被重新啟動,於是使系統更流暢了。
——
但是,有一點無需洗地的是:無論內存有沒有辦法有效釋放掉,1G 內存其實都是非常不足的。因為,只要釋放後台應用,就會存在切換過去的時候應用被重新啟動的問題,這必然會造成不流暢,終極的流暢是我們不需要釋放任何後台應用,而這必須要足夠多的內存支持。
1G 的內存它實質上仍然會造成 iOS 的卡頓,只不過有不少的蘋果教徒因為無上的信仰,而忽視了這些卡頓而已。將來的 iPhone 6s+, iPhone 7+ 之類,提升 RAM 肯定刻不容緩。
iPhone 在內存不足的情況下,不提示就直接把後台程序終結了,經常出現剛把程序切換出去再切換回來就又要重新打開了。。。
ios不是不會內存不足,只是內存不足的時候不告訴你,直接幫你把後台的內存清理掉,保證你運行的程序正常。
我用IPAD玩爐石傳說,看到一個QQ消息,點了一下,切換到QQ看了消息,再切換到爐石,發現沒了,得重新進,雖然沒有讓你卡到覺得內存不足,但是這不就是標準的內存不足嗎????
誰跟我說iphone不會內存不足!
勞資現在在用iPad Safari上知乎,點開新話題標籤頁原來的知乎主頁就要重新載入啊!
然後就不知道自己上次瀏覽到哪了啊!
蘋果你整個2G的內存會死啊!
知乎也不出個iPad的app..........
iOS中你可以在 通用→關於本機→診斷與用量 里查看具體的LowMemory記錄
App Store能讓產品經理開啟自我審查
Google Store能讓產品經理進入常態
豌豆莢等可以讓產品經理做出老闆想要的App
說個技術之外的點:
為啥好端端的APP,在蘋果的市場里就乖乖的,在安卓系統下就無惡不作?
原因在於經濟學裡面的公共地悲劇,所為的公共地悲劇是說,如果一塊公共的草場,大家都可以在上面養羊,於是一個人養了羊,另一個人也養了,但是地是公共的,所以你養的羊越多,就越多佔用公共資源為自己的羊服務。
結果就是大家都養很多羊,結果是如果只有一個人養羊的話,每隻羊都吃的飽飽的胖胖的這個人可以都賺到很多錢。但是如果不限制人進入草場的話,最後草場上的每一隻羊都被餓的瘦瘦的誰都賺不到錢。
安卓市場就是這樣,反正沒有一個強勢的監管方,如果你要不耍流氓。你就會被那些耍流氓的App打敗。
為什麼蘋果的好呢?就是因為如果你申請了非常過分的許可權影響了IOS系統的體驗,蘋果會把你下架。但是谷歌完全不在乎這個事情,因為用安卓的人都是其他公司。
所以從經濟學的角度來說,安卓的市場是一片無主公地,自然會出現公共地悲劇。而IOS市場產權明晰。主權者蘋果公司會自己出面來維護一個良好的秩序,否則蘋果是第一個受損失的人。1.Android系統本身的問題,它是開放的系統,頻繁的安裝與卸載必然會在手機內積累大量殘留垃圾。
2.並不是垃圾多的App就一定是垃圾App,像一些門戶網站和一些生活類的App,必然會生產出大量的系統垃圾。比如QQ、微信、視頻、微博這些頻繁使用的應用。
3.應用開發商並不是每個都能力優秀,優化做得不好在使用中當然會產生大量的垃圾文件佔用ROM空間,以及這些App在後台自動啟動佔用RAM。
4.一些不良的應用開發商會在App中大量植入廣告,因為通過植入廣告他們可以掙到大量的錢財。可以說一個安卓App裡面,才出現一兩個廣告的話,那我們就應該很感謝那個開發商了。
5.說到廣告的植入,我們會感到很厭惡,但要說到一些大型的App在用戶下載安裝時,同時會要求用戶綁定安裝其他的App,我們又作何感想呢。有時某個App發現更新,但當用戶更新完畢後,很可能桌面上會多出來一個新的圖標。
而且根據手機系統專家的介紹,手機變慢的原因一般是由於隨機啟動程序太多、內存佔用過大、系統垃圾過多、程序碎片化等因素造成的。
簡單重啟手機僅僅是系統內存重新載入,但是無法解決自啟程序過多和系統垃圾問題,所以治標不治本。
普通用戶試著手動清理系統垃圾則風險極大,弄不好就會導致手機「變磚」,所以清理還是個專業任務。所以市面上有清理軟體的存在,類似於360清理大師,SD卡佣等
呵呵,Safari多開幾個tab試試?
我一直覺得Windows(Android)看起來沒有OS X(iPhone)穩定的一個主要原因就是:Windows(Android)系統或程序崩潰了就給你彈窗警告,給你報警,給你藍屏,給你一堆看不懂的錯誤代碼,然後讓你手動重啟;OS X(iPhone)崩潰了,就默默的自己重啟一下。
你看WP每次內存不夠都會跳轉到內存回收頁面,iPhone直接就把進程給你殺了。
這告訴我們,看起來不專業才能讓用戶爽。一:iphone把你剛剛用過的應用偷偷的幹掉了,你不知道吧。就蘋果那個萬年1G的小內存,要不是偽後台,早卡成狗了。iphone之所以不卡原因有二:1單任務,2統一推送。至於眾人朝貢般稱頌的優化,完全是建立在前兩者的基礎上,沒有前兩者優化就是空中樓閣。有了單任務特性,手機就可以清理後台內存中任何應用,只要點擊home鍵,應用就基本沒什麼用處了,以保證有足夠的內存運行新啟動的應用。有了統一推送就幫助了任何想推送消息的應用,即使內存中就不存在該應用。神馬的優化,全是扯淡。。。在iPad mini上打開瀏覽器多開幾個標籤頁,來回切試試,各種重新載入,這就充分了證明了當前應用因為不能被系統偷偷幹掉而又面臨內存不足充分暴露出的窘境。iphone不卡?別鬧了!
二:android是真多任務,也沒有統一的推送機制,造成了各個應用各自為政(時不時連接下網路,偷偷的緩存點數據,偷偷的上傳點用戶隱私數據,冷不丁的推送個消息,清理後定時幾秒又重啟)那些總想著"干點正事"的應用就只能在內存中。
對於同時使用nexus 4和 iPod touch 5的我來說……這個問題我想反過來問……
---------------------- 2014-10-15更新 -------------------------
貼張圖
就是這個提示框,跟ANR的提示框完全不一樣。
---------------------- 2014-09-30更新 -------------------------
第一次贊同超過10,很滿足。
評論不多,但是有很多同行,有幾位提到了GCM——Google Cloud Messaging,這個東西並不是我不知道,但是這東西經常訪問不了啊,否則國內那些提供推送服務的企業也不會這麼吃香吧。
再舉個例子,國內有多少使用Android手機的人下載應用首選的是google play?
------------------- 2014-09-26第一次的回答 --------------
忍不了了,排名第一的答案,只能說是幽默了一把。而排名第二的答案,我只能說只是說明了國內安卓開發的一個普遍現象。
為什麼iPhone不會內存不足,而Android會內存不足?鄙人拙見,究其根本原因是iPhone是偽多任務系統,而Android是多任務系統。
在iPhone中退出當前正在使用的應用後,該應用會在後台掛起,當使用某個應用時,如果ios系統發現內存不足了,就會去後台掛起的應用中看看哪個是最早被掛起的,然後將其殺死,釋放掉這個被掛起的應用所佔用的內存。
Android則不同,將應用退出後,該應用在後台可能會一直運行,比如微信、QQ,退出後不再運行,那麼當有人給你發消息時,就不會在通知欄收到相應的通知。當有很多這種應用在啟動時,那麼內存就肯定會不足了。不過Android系統也不是無所作為,它也是會自動清理的,不過就是清理的比較慢而已,並且雖然是後台清理,但是殺死某個應用時,會彈出一個提示框告訴你某個應用已停止。
所以這也是為什麼會覺得iPhone不會內存不足,而Android會內存不足
-----------------以下是補充說明分割線-----------------------
看完上面的內容,也許有網友會說,iPhone退出QQ、微信也能收到消息提示,這個你怎麼解釋。好吧,我就知道有人會這麼說,我來詳細解釋一下,這個是因為iPhone和Android的消息推送機制不一樣造成的,iPhone是由伺服器主動推送,而Android則是被動推送。
簡單說就是你的iPhone只要聯網,伺服器就會知道,當收到消息後,就會主動將消息推送到你的手機,無論是QQ、微信、或者新聞客戶端、郵件客戶端。但是Android則不一樣,Android是需要不斷的發送請求告訴伺服器我連著網呢,這時伺服器就知道,噢,這傢伙連著網呢,我去看看有沒有這傢伙的消息,如果有則將消息發送給你。這種機制,從技術上講叫做長連接,實現的方式就是發心跳包。如果很長時間沒有心跳包,則伺服器就認為你「死」了,也就是沒有網路連接,而當聯網後,只要應用還在後台(前台)運行,就會立刻告訴伺服器,我連網了,我連網了,快給老子看看有沒有我的消息,有就趕緊發給我。
-------------------以下是使用技巧--------------------
我之前用的HTC G7,內存只有512M,開機後,我通常會去應用程序管理器里將不用的程序強制停止,所以基本上很少出現內存不足的情況。
再補充一下,Android上的各種xx管家,可以說其實它們才是最費內存的,如果他們不是一直在後台掃描,它怎麼可能知道內存已經佔用了多少。所以我的Android設備從來不會安裝xx管家這種工具。
-------------------以下是對國內Android開發環境的吐槽-------------
排第二的答案說現在Android APP的開發是流氓時代,一方面是因為惡性競爭,另一方面是因為國人使用軟體的習慣造成的,試問,有多少人付費買過軟體?有多少人願意付費買軟體?
一個Andorid應用的開發周期短的需要個把月,長的需要一年半載甚至更長時間,如果是公司的產品還好說,要是個人開發者在開發應用的這段時間他只能靠之前攢的積蓄生活,當開發完這個應用,就得靠著這個應用生活了,必然會在開發的應用中添加廣告,靠這些廣告來賺錢。說到廣告,這裡跟各位看官說下,不要以為這些廣告有多賺錢,其實收入是低的,要想取得高收入都是長年累月的積攢。簡單說下,廣告的收入分為點擊的和展示的,點擊的好說,點一次廣告就有錢進賬,但是,點一次廣告一次也就收入幾分錢,就是這幾分錢還要給廣告內容提供商提成。展示的就更不用說了,通常是展示1000、10000次才有收入,當然收入也不高最多也就幾毛錢,而且也要給廣告內容提供商提成。
惡性競爭就更不用說了,這個QQ、360大戰已經體現的淋漓盡致了。
以上,就造成了現在國內Android APP的流氓時代。
好了,想吐槽的想噴的,你們可以開始了
-------------------以下糾正補充說明iOS的推送-------------經過回答網友的評論,糾正一下前面的回答。在查了資料後發現,iPhone聯網後伺服器就會知道,也是iPhone發送了消息到APNS,注意,這裡是iPhone發送,而不是應用發送。我想這也是在國內iOS跟Android在推送上的最根本的區別吧。iPhone告訴APNS自己聯網以後,APNS應當會查找所有需要下發到這台iPhone的消息,然後一股腦的發到這台iPhone上,最後由這台iPhone自己在分發到不同的應用並且在相應的應用圖標的右上角顯示個數字。
原因1. 用國產的手機
原因2. 用國產的軟體
原因3. 1G的RAM卻裝了能消耗2G的軟體, 而且是國產軟體, 後台偷偷摸摸干一些不齒的事情.
現在用安卓,還會內存不足的同志,我只想說,您該換個好點的手機了。。。
1、用iPad air裝上優酷和優酷HD
2、啟動優酷,打開一部劇集其中一集30分鐘左右的視頻,暫停讓他緩衝
3、切回桌面
4、啟動優酷HD,打開同一部劇集的第二集視頻,看
然後你就會感受到什麼叫內存不夠用了
(老媽上次拿著iPad air來問我為毛感覺好卡,我一看後台,優酷和優酷HD同時在運行,其中一個在緩衝視頻,另一個在播放……)
請問題主:哪台和iphone同價格的安卓手機很容易出現內存不足?品牌型號是多少?
答主您用過Android嗎?或者換個問題問您的Android手機是上古產品嗎?
iphone怎麼可能不會內存不足,沒提示你而已。多開兩個網頁或者app就知道了。那就是網頁和app重載,沒明確提示而已。所以這問的。。。而你說的安卓經常提示內存不足也不知道你用的是幾百塊的安卓,我反正3000的不會。
推薦閱讀:
※iPhone 4S 國內上市後,iPhone 4 掉價幅度有多大?
※手機充電器的 USB 充電頭放嘴裡能電死人嗎?
※如何評價 iPhone SE?
※如何評價蘋果官網的新文案設計「無雙,有此一雙」?
※如果最近使用了被感染 Xcode Ghost 病毒的應用,應該做些什麼?