Android 系統效能優化

2021-07-08 10:39:30 字數 1929 閱讀 8398

android作為一種移動裝置的作業系統,無法像pc機一樣具有強大的記憶體和cpu,這就意味著,我們的android應用程式無法無節制的使用記憶體和cpu資源。很多時候我們過多的使用這些資源時,會導致系統的卡頓或者程式anr。常見的記憶體使用異常主要包括兩種:記憶體溢位和記憶體洩露。記憶體溢位:指的是應用程式的記憶體使用量超出了系統分配的記憶體大小;記憶體洩露:指的是某個變數已經不再使用了,但是它還占用著記憶體,沒有釋放。對於這些,我們的android系統肯定是容忍不了吧?

好吧,不廢話了,來吧。

現在我將給大家介紹一些android效能優化的方法和注意事項。比如布局優化、繪製優化、響應速度優化、bitmap優化以及執行緒優化等等。

1、布局優化

布局優化的思想其實很簡單,也就是減少view的層級。布局中的層級減少了也就是意味著系統在繪製view的時候消耗的記憶體小了,是不是啊大兄弟們?

我們在使用layout的時候通常是這麼三種:linearlayout、relativelayout和framelayout,其實啊,當我們可以不使用relativelayout時就於要去使用它,因為它的內部實現要比其他兩位大仙複雜的多,你可以去看原始碼。不過如果用來構造比較複雜的布局時,如果使用linearlayout不得不使用多層級時,那你還是用relativelayout來解決吧,相信哥,雖然我不是傳說。

還有一種優化方法就是如果可以的話你可以通過使用、和viewstub。可以用來做布局的重用,通常和配合使用,使用還能減少布局的層級哦,viewstub通常是當使用該布局的時候才去載入,這樣是不是會減少很多的記憶體消耗呢?使用例子我就不講了,網上一大堆吧。

2、ondroaw()繪製

這個東西啊,其實我不是特別懂,在這裡只是給乙個提示性的建議。繪製優化我覺得主要體現在ondraw方法裡邊。

在ondraw裡不適合載入布局,為啥呢,因為這個方法會呼叫很多次,我們去使用findviewbyid()方法時會消耗很多記憶體,更何況是載入乙個布局呢。

在ondraw裡不適合做耗時操作,你想啊,這個方法呼叫的頻率這麼高,咱還去做耗時操作!天理何在啊。

3、屬性動畫導致記憶體洩露

啊,android3.0之後給我們加入了屬性動畫的概念,具體關於屬性動畫和幀動畫的比較可以自行google,我這裡只說一點,屬性動畫改變的是該view的屬性,而幀動畫改變的時候view的顯示效果。舉個例子哈,比如做乙個轉圈圈的屬性動畫,start()該動畫之後,我們不去cancel()它,不管你的activity有沒有退出,該動畫依然存在!!只是你看不見而已,根據記憶體**機制,你這個動畫屬於某個activity,這個動畫沒有cancel(),你說這個activity還會被**嗎!?

4、應用的響應速度

額,一般來說,響應速度的核心思想就是在主線程中盡量的稍作耗時操作,嘿嘿,非同步的形式去載入耗時操作。如果您老在activity主線程上做了好多耗時操作,那麼你要悲劇了,手機螢幕要黑屏了,程式要anr了。在,activity一般在5秒鐘之內沒有響應的話會anr,廣播在10s沒有響應的話也會anr。關鍵是,程式出現了anr,我們很難找到具體位置!!嘿嘿,其實啊,人家谷歌大哥哥已經為我們考慮好了,如果您老的程式出現了anr,則系統會在/data/anr/目錄下建立乙個檔案,芳名:traces.text。啊,在這個檔案裡邊你就可以看到anr的具體位置了。

5、其他

對了,bitmap嘛,我們用它的時候主要是載入,這個你可以自己去看一下image-loader這個開源庫,很好用的,這個bitmap的釋放和快取都不需要你自己去寫了,直接拿來就用。還有執行緒嘛,如果你不嫌麻煩的話,您老可以使用執行緒池的方式去管理和使用執行緒。啊,對,還有乙個listview的優化,這個我就不說了,大夥兒都知道。

最後再加一句,service能不用就不用吧,這玩意兒記憶體消耗挺大的,不過,你可以使用intentservice,這個好處就是你不需要去管它什麼時候銷毀,只要任務執行完畢,它自己就把自己給銷毀了,牛x吧?

當你想知道你寫的**消耗記憶體的情況是咋樣的,那你就去使用mat記憶體分析工具吧,我不是很熟悉,只是知道一點點。

啊,完事兒了。

優化系統效能

程式框架 hibernate3 struts2 spring2 資料庫 sqlserver2008 伺服器 tomcat6 優化方法 1 配置連線池 採用的c3p0連線池 2 在程式中獲取列表時,用iterator代替list 3 在查詢之後可以使用session.clear 方法釋放快取 4 用資...

Linux系統效能優化

由於各種的i o負載情形各異,linux系統中檔案系統的預設配置一般來說都比較中庸,強調普遍適用性。然而在特定應用下,這種配置往往在i o效能方面不能達到最優。因此,如果應用對i o效能要求較高,除了採用效能更高的硬體 如磁碟 hba卡 cpu mem等 外,我們還可以通過對檔案系統進行效能調優,來...

系統效能優化策略

1 php內的sql 效能存在問題 這個存在於兩方面,乙個是sql本身優化不夠,另外乙個方面是隨著資料量的增加,某些效能問題會逐漸暴露。2 apache處理模式造成的記憶體消耗 由於apache是以程序的形式,同步阻塞式的處理http請求,so,當網頁本身載入元素過多的話,會造成大量的http程序併...