Android開發中內存和UI優化


1.內存||效率

  GC這東西對於開發人員用起來比較爽,但對於技術總監或產品總監來說,他們並不在乎,在乎的是用戶運行App的流暢度,待你開發完了,笑眯眯的走過來,讓你測試N個適配器,煩都煩死你。  

  說到這里,情不自禁的對比安卓和蘋果,身處中國這么個“人手一個”安卓手機的國家,各種翻版的系統應運而生,苦了我們程序員啊,各種品牌機各種適配器各種側,我擦啊!既要考慮適配又要考慮內存(雖說蘋果這方面肯定也考慮)  再看看蘋果,一個iphone4開機啟動剩余內存只有512M左右,人家程序隨便怎么跑,開好幾個軟件依然流暢。    

  GC啊,想說愛你不容易!

  國內的安卓推廣平台如此之多,許許多多廣告軟件必須得出來,隨便下載一個游戲,一打開就彈個廣告窗口,看個小說也給你突然來個廣告。 所以說選擇一個好的軟件很重要平台。 蘋果的軟件,開發很快速,用的工具,用的組件全是一套東西,想不快都難,而且上傳至app store也是需要經過嚴格審核,最近好像app store又要開發者提供詳細的個人信息,否則上傳app不予以通過。     哎,綠色的環境啊!

回歸正題::

  gzip 壓縮http請求的數據,並且設置連接時間和響應時間

  ListView 圖片+文字列表,異步加載圖片,並且在圖片滑動時利用 不加載圖片

  下載web-image,利用線程池(可分為普通線程和核心線程的異步下載任務),將下載任務小,零碎文件置於核心線程,將圖片下載任務放置在普通線程,避免由於文件過大堵塞線程池,從而最大限度的優化下載進度

  盡量少用static靜態變量來引用大的資源對象,比如:Context上下文

  保證Cursor占用的內存被及時的釋放掉,而不是等待GC來處理。並且Android明顯是傾向於編程者手動的將Cursorclose掉

  應用開發中自定義View的時候,交互部分,千萬不要寫成線程不斷刷新界面顯示,而是根據TouchListener事件主動觸發界面的更新

  線程也是造成內存泄露的一個重要的源頭。線程產生內存泄露的主要原因在於線程生命周期的不可控

  UI組件需要用到的圖片是apk包自帶的,那么一律用setImageResource或者setBackgroundResource,而不要根據resourceid(注意:get(getResources(),R.drawable.btn_achievement_normal)該方法通過resid轉換為drawable,需要考慮回收的問題,如果drawable是對象私有對象,在對象銷毀前是肯定不會釋放內存的。)

  

2. UI優化

Layout:

  Layout組件化,盡量使用merge及include復用

CSS:

  使用styles,復用樣式定義

軟鍵盤:

  軟鍵盤的彈出控制,不要讓其覆蓋輸入框

  數字、字母和漢字混排占位問題:將數字和字母全角化.(由於現在大多數情況下我們的輸入都是半角,所以字母和數字的占位無法確定,但是一旦全角化之后,數字、字母的占位就和一個漢字的占位相同了,這樣就可以避免由於占位導致的排版問題。)

布局組件:

  復雜布局使用RelativeLayout


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM