純技術角度扒皮EMUI5.0,真有那麼好嗎?

android最為人詬病的地方就是卡頓,EMUI5.0真能解決這個問題嗎?

這幾天到處都是EMUI5.0的文章,說得神乎其神。文章中關於卡頓有如下幾點觀點:

卡頓原因:

1.碎片化導致

2.不合理應用服務導致

EMUI5.0解決辦法:

1.智能學習,準確預測,降低應用啟動時間。

說白了就是預載入,windows很早以前都在用,效果有一些,實在是不明顯,並且會佔用過多的內存。android使用的是linux內核,運行內存本來就不會白白空著,而是充分利用,做文件緩存什麼的。原生的android一開始在這裡也是做足了文章。

2.及時感知應用的資源需求,和麒麟晶元緊密結合按需實時動態調度CPU、GPU、IO等資源,不同應用區分調度。徹底改善「公平資源調度」策略下,應用打開越多手機越慢的現狀。

這個估計是針對性的優化,微軟的老辦法,像IIS什麼的在Windows下飛快,就是針對性的優化。

3.智能化的內存回收/壓縮,保證系統始終有內存可用。智能清理資料庫垃圾內容,結合優化的資料庫引擎,資料庫查詢性能提升,多連接並發能力增強。

這個其實是手機清理軟體經常做的事,效果有一些,特別是將一些流氓應用清理掉後,感覺會好很多。

4.華為EMUI增強了文件系統管理,減少文件碎片,徹底解決了Android性能久用卡頓問題。

android本來使用的就是linux文件系統,文件碎片本來就不多,不像window下需要整理磁碟碎片。

手機不是使用的機械硬碟,隨機讀寫與順序讀寫差別並沒有機械硬碟那麼大,即使有點碎片影響也不明顯。其實在window下進行磁碟碎片整理的效果也不明顯,記得以前剛接觸電腦時,經常整理碎片,也沒見什麼改善,後來從不整理,也沒什麼拖累。

android系統與蘋果IOS系統相比,卡頓是很明顯的,即使是新系統也是如此。除開那些流氓應用搗亂外,架構才是根本的原因。

1.android應用一般使用java的體系結構開發,java的體系結構在客戶端表現一直很差,多用於服務端後台應用開發。這是與ios應用的根本差別。

a.垃圾回收,頻繁的內存分配和釋放肯定會導致垃圾回收,導致界面卡頓。

精美的用戶界面,離不開大量的圖片,非常消耗內存。小程序還可以把這些圖片全載入到內存中,稍大點就做不到了,只能在切換界面時動態載入,頻繁的內存分配和釋放是避免不了的。如果使用內存池,要稍好點,但是用戶界面的對象大小差別很大,池的管理會非常複雜。並且用戶界面程序開發者,幾乎沒有使用內存池習慣和意識。

b.一個android應用能佔用的內存非常受限,一般為100-200M,視系統設置而定,與服務後台程序相比,少得可憐,所以很多服務後台程序的jit優化等措施是沒辦法用的。

c.虛擬機與c/c++等編譯的本地代碼的通訊開支比較大。雖然現在可以將虛擬機代碼編譯成原生代碼運行,但是這部分開支仍存在。

2.默認的代碼是運行於界麵線程中的,雖然後來加了一些限制,在界麵線程中操作網路會報錯。這種做法已經過時了,寫代碼稍不注意,做點耗時的操作,很容易導致界面白屏卡頓。如果能引入virtual-dom的技術,將用戶邏輯代碼與界面的渲染代碼徹底分離到不同的線程中去,效果會好很多。


P9剛升級了emui5.0,用了一天不到,只想說一句,牛一樣快


我P9升級了EMUI5.0感覺跟換了一個新機一樣,不得不說,華為很牛


表示原生emui5的mate9流暢度不輸iPhone7,也許某些細節方面做得不如ios好,但是至少可以說跟iOS的差距小了很多,比廣告之王MIUI要好用得多。

emui5的 Machine Learning人工智慧學習系統 比Linux原生自帶的內存緩存要人性化和智能,可以更有效的提高緩存命中率。其實收集用戶習慣和結合大數據的人工智慧學習系統iOS一早就用上了,emui在這方面只是IOS的追隨者

--------------------------------------------------------------------------------

關於emui5講到的碎片整理,我覺得在這裡有必要糾正一下題主對於碎片整理的理解:

windows上的碎片整理,是整理機械硬碟上文件與文件之間的碎片,因為機械硬碟使用磁碟,文件存儲過程中可能會存儲在磁碟的不同位置而不是儲存在連續的磁碟簇中,所以需要碎片整理將同一個文件整理到連續的磁碟簇中,所謂碎片是一組文件被存儲在距離較遠的磁碟位置而像被打碎的意思。

華為emui5說的這個碎片指的是ssd中的臟塊概念,相當於加強主動gc能力,類似於浦科特的那個永不掉速,雖然原理上也是用壽命換速度,但和windows上那個碎片整理八杆子打不著。

所以華為emui5宣傳中用「碎片整理」概念沒有問題,因為gc垃圾回收的原理是舊塊必須全部擦除才能再次寫入,而舊塊中同時擁有有效信息和無效信息,gc就是將有效信息從各箇舊塊中抽到一個新塊中,然後擦除所有舊塊,從過程上看其本身在整理碎片化的有效信息到一個新塊,清理碎片化的無效臟塊。

emui5宣傳中的18個月不卡指的應該是mate9的emui5,不是指所有emui5。畢竟mate9有UFS2.1快閃記憶體的加持,配合emui5的「碎片整理」,確實可以有效的延緩機器變卡的時間。


經常國內外跑的來說一句,MATE8更新了推送的EMUI5.0以後,google play無法下載任何新軟體,只能下載以前購買過的軟體。

而更換成一個沒有任何設備信息的全新的google賬號以後就能隨便下載了,並且使用mate8登陸新賬號後發現沒有任何設備信息被記錄,也就是說沒有任何設備信息被上傳到google,也就是說google的某些服務的的確確被華為限制了,我查看了程序發現所有的google服務都在,然而比如google賬號管理在內的服務卻沒有任何緩存和數據。

所以推測google play不能下載新應用因為這個操作需要驗證設備信息,但是因為某些原因設備信息沒法上傳(已經給了收集設備信息許可權)。

所以可以判斷這個鍋還是得華為背。

一碼歸一碼,其他不需要用到設備信息驗證的google服務都沒有任何問題,EMUI5.0的確是很快很流暢的。

但是評價依舊差評,畢竟這麼簡單的錯誤都能犯出來,虧得還是個世界五百強。。。還好沒買MATE9。。。

國外版本的安卓機回國後水土不服才想著買個華為,結果這麼這一來就有點尷尬了,要不是討厭庫克我都打算換回蘋果了。。。


p9昨天升級了emui5.0

一個感受就是

我真的在用安卓機嗎

怎麼可以這麼流暢

猴嗨森


說說為什麼不卡吧

由於華為在emui5上面用了f2fs的文件系統

p9的emmc5.1隨讀速度能到200ms

和ufs2.1的速度接近了

所以 這或許是華為所謂的優化和emui的小細節吧


沒了圖片排序功能,看漫畫很鬧心。


mate8 577升級使用了一個多月了,剛開始的時候,是啊賊,賊流暢,無時無刻都在心裡默念,菊花大法好。可是半個月之後就開始了卡頓。

我能怎麼辦,我也很絕望啊。耗電雖然沒有論壇說的那麼邪乎,但是卡頓是真的有。就是在按下方格子鍵,切換任務的時候。真的是。兩個月了,不給更新系統

官方的置頂帖說,剛開始升級完費電是正常的,最好是連著WiFi充電兩個小時。


mate8電信版,剛升級完5.0,有點相見恨晚的感覺,忘了早幾個星期升級好了。

最近一直煩惱mate8的卡頓,尤其事打卡支付寶之類應用時,升級完後明顯感覺流暢很多,最開心的剩餘內存比之前平均多了500M左右。

界面更新也很喜好,很多操作也方便很多,這次升級很值,也是最滿意的一次。


剛升級,感覺ios不像ios.Android不像Android。。。而且性能提升有那麼明顯?


昨晚剛升級5.0,mate8,早上一使用,發現很流暢,而且感覺清理緩存更狠了,以前裝的程序有點多,即使是4G運存,去年4月到現在也是開始有點緊張卡頓了。即使做清理,剩餘空間也只有1.35左右(老系統),但是升級後,發現一次性就清理到剩餘2.45G可用——這意味著幾乎和我剛買mate8手機時候的運存狀態一樣啊!

而且界面交互更人性化了一點。

至於它主打的越用越快這點,由於剛升完級,暫時看不出來。留待日後觀察。


同樣p9,升級後只能說非一般的感覺,就跟不帶套一樣的順滑


昨晚p9剛升級到emui5.0,確實流暢了很多,ui也更漂亮了


emui5.0使用一天來答題,此刻盡享絲滑,太美妙了


按這麼說emui是否優秀於其他ui?


推薦閱讀:

如何在GitHub上發現好的項目?
獨立開發手機應用需要掌握哪些技術與知識,以及通常需要多少資金?
Windowsphone上第三方軟體(非官方)出品的軟體怎麼做?
如何優化Android/iOS應用安裝包大小?
一個Android偏底層開發人員,對發展很迷茫,我該怎麼發展?

TAG:Android開發 | EMUI |