android 性能優化
? ? ? ?1) 珍惜Services資源
? ? ? 當你啟動一個service,系統會傾向為了保留這個service而一直保留service所在的進程。這使得進程的運行代價很高,因為系統沒有辦法把service所占用的RAM空間騰出來讓給其他組件,另外service還不能被paged out。這減少了系統能夠存放到LRU緩存當中的進程數量,它會影響app之間的切換效率。它甚至會導致系統內存使用不穩定,從而無法繼續保持住所有目前正在運行的service。
? ? ? ?2) 避免bitmaps的浪費
? ? ? 當你加載一個bitmap時,僅僅需要保留適配當前屏幕設備分辨率的數據即可,如果原圖高于你的設備分辨率,需要做縮小的動作。請記住,增加bitmap的尺寸會對內存呈現出2次方的增加,因為X與Y都在增加。
? ? ? 3) 使用優化的數據容器
? ? ? ?利用Android Framework里面優化過的容器類,例如SparseArray,SparseBooleanArray, 與LongSparseArray。 通常的HashMap的實現方式更加消耗內存,因為它需要一個額外的實例對象來記錄Mapping操作。另外,SparseArray更加高效在于他們避免了對key與value的autobox自動裝箱,并且避免了裝箱后的解箱。
? ? ? 4) 請注意內存開銷
? ? ? 對你所使用的語言與庫的成本與開銷有所了解,從開始到結束,在設計你的app時謹記這些信息。通常,表面上看起來無關痛癢(innocuous)的事情也許實際上會導致大量的開銷。例如:
? ? ? 5) 謹慎使用第三方libraries
? ? ? ?不要陷入為了1個或者2個功能而導入整個library的陷阱。如果沒有一個合適的庫與你的需求相吻合,你應該考慮自己去實現,而不是導入一個大而全的解決方案
? ? ? ?在Android上這個技巧就不再是那么的受推崇了,因為字段搜尋要比方法調用效率高得多,我們直接訪問某個字段可能要比通過getters方法來去訪問這個字段快3到7倍
? ? ? 因此請盡量避免創建不必要的對象,有下面一些例子來說明這個問題:
? ? ? ?一組int數據要比一組Integer對象要好很多??梢缘弥?,兩組一維數組要比一個二維數組更加的有效率。同樣的,這個道理可以推廣至其他原始數據類型。
? ? ? ?Android系統中float類型的數據存取速度是int類型的一半,盡量優先采用int類型。
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
推薦閱讀更多精彩內容
- Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
- 被文同時發布在CSDN上,歡迎查看。 APP內存的使用,是評價一款應用性能高低的一個重要指標。雖然現在智能手機的內...
- HereAndroid的內存優化是性能優化中很重要的一部分,而避免OOM又是內存優化中比較核心的一點。這是一篇關于...