android最恶心的是什么?
別的不提了,最讓我惡心的是它因為各種各樣的原因自己不知不覺就會啟動好幾個我根本用不著的程序和后臺服務,有時候甚至讓人覺得匪夷所思,然后這些進程還就在那呆著了。
android管理內存的方法叫做low memory killer,這東西簡單的不能再簡單,就是留比如30M緩沖,你啟動一個新程序可以往這30M里放,同時它再清出30M;也就是說這個時候去結束它覺得沒用的程序。
這里頭有一個核心思想,就是我花錢買的內存不是用來空閑的。保證越多的程序在內存里,那么切換進這些程序的概率就越高,如果中獎了速度就會更快。
這個道理聽起來再正確不過了,可是一個處理不好,就是android這樣的老牛拉破車的結局:你搞不清楚什么時候CPU或者內存就被別人占用了,于是間歇性的會明顯感覺到不流暢。可惜Google就是處理不好這個,很容易就在這個緩沖的邊界折騰來折騰去。
仔細觀察一下android下Java程序的架構就知道,有時候你僅僅需要一個簡單的動作,這時候卻牽連出一大堆占內存的東西。不知道這到底是賴面向對象的組織方法呢,還是賴Google沒設計好。
另一方面,這種設計就很難約束開發者;隨便拿一個Process Monitor看一下,仔細一琢磨就知道,很多時候很多軟件的不同模塊之間沒必要的牽連太多,功能分布不合理,尤其是這些程序如果是作為Framework的擴展和圍繞常用功能集展開的,比如廠商自定義的東西,就完蛋了。
這就是為什么Sense界面和原生Android在輕量級使用時空閑內存會有那么大差異的原因(HTC的主設計師應該開掉),以及為什么Android會不可思議的時快時慢的原因(和其它廠商相比)之一。
讓我們再觀察觀察Settings.apk。這玩意有什么內容?居然要占走幾M十幾M的內存。為神馬為神馬這是為神馬!能夠快速加載和啟動的程序,或者程序中的某一部分,根本就沒有必要留在內存里。我們可以說,Google這種常駐內存的策略,最終全都優惠在那些駐不駐內存用戶根本察覺不到的東西上了。
那另一個影響速度的原因是什么呢?是那些該死的服務:雖然看起來Google想規劃一下這個事情,但是至少目前,這些服務還是會經常性的和用戶當前操作去搶CPU資源。
讓我們看看Linux內核編程是處理這個事情的:接著中斷的例程必須盡可能快速的結束,把大部頭工作交給一個隊列去做。Linux內核程序員全都懂這個事情,但你Google沒權利要求我們像做驅動那樣做應用,更何況整個運行時設計的素質讓開發人員處理這個比在內核里還難!
(Android的主設計師應該開掉,你知道你設計的是什么東西嗎?)
不知道競爭到底會走向百花齊放還是就這樣了。如果真的硝煙再起,我要說的是,只要有一家肯真正努力,Android一定完蛋,不管它那時候是3.5還是9.0。因為大規模更改運行時去達成合理化,等于直接把App數降回史前時代。
不過這些也真難說了,從最上到最下,從最大到最小,世道變了,人心也變了。哥們我是不得不關注這些方面尋找機會,有朝一日財務自由了,寧可回去當原始人也絕不忍受這種對付事情的產品。
?
P.S. 一旦有了真正的競爭而不是幾個寡頭壟斷,戰火燒到PC平臺也不是沒有可能。到了那會兒第一個銷售收入下降的就是可憐的Intel,因為大家發現居然有免費的午餐,下載個盜版XYZ就能讓體驗好一倍... (我這篇文章說的是體驗,不涉及真正的執行效率,雖然這方面Google跟競爭對手比也是個新手中的菜鳥)
總結
以上是生活随笔為你收集整理的android最恶心的是什么?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NetBeans IDE 7.0 Bet
- 下一篇: 自学能力和学习能力