Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android持續優化 - 提高流暢度 (值得一讀)

Android持續優化 - 提高流暢度 (值得一讀)

編輯:關於Android編程

一.形象的感官一下流暢度概念   1. 這是官方給出的概念:Android流暢運行,需要運行60幀/秒, 則需要每幀的處理時間不超過16ms。   2. 每秒幀數,實際上就是指動畫或視頻每秒放映的畫面數。因此“幀”的概念就是指“畫面”,1幅畫就叫做“1幀”,每秒幀數指的就是“每秒播放的畫面數”。幀數就是在1秒鐘時間裡傳輸的圖片的量,也可以理解為圖形處理器每秒鐘能夠刷新幾次,通常用fps(Frames Per Second)表示。每一幀都是靜止的圖象,快速連續地顯示幀便形成了運動的假象。高的幀率可以得到更流暢、更逼真的動畫。每秒鐘幀數 (fps) 愈多,所顯示的動作就會愈流暢。   3. 一幀占用內存數   當畫面的分辨率是1024×768,刷新率要達到60幀/秒時,那麼顯卡在一秒鐘內需要處理的像素量就達到了“1024×768×60=5713920”。那麼一個“像素量”,相當與占用多少內存?我們用位圖來代替粗略計算,把分辨率是1024×768看成一張對應大小的位圖,通過位圖的大小來大概計算占用的內存大小。而位圖的存儲算法,在維基百科上有詳細的介紹,詳見下面的鏈接。   一張1024×768的16位(bit)位圖文件大小 = 1024×768×16/8 = 1572864 B = 1536 KB = 1.5 MB。如果要求畫面的刷新率達到60幀/秒,則每秒需要處理的數據量就達到1.5 * 60 = 90 MB,這個數據是相當大。   實際系統中會通過GPU顯卡處理顯示,減少CPU工作量,或者系統會緩存或局部刷新來降低處理量。沒有研究過,也很想研究一下顯示的流程。   二.Android流暢度的根本:解放UI主線程   1. 不要阻塞UI線程;   2. 不要在UI線程之外操作UI。   三.以ListView加載圖片為例   更流暢?   1. ListView如何流暢順滑加載?   2. ListView使用convertView可以提高兩倍性能?   3. ListView回收item的原理是什麼?   4. ListView重復加載調用的問題?   5. 如何解決圖片加載OOM問題?   6. 如何更流暢的加載圖片?   7. ListView加載大量圖片並發問題?   ListView優化要點   1. 優化Adapter,使用convertView,效率提高2倍;   2. 優化item布局,提高整體性能;   3. ListView重復調用問題可以設置layout_height高度固定或者fill_parent,加載的原理;   4. 使用addHeader和addFooter代替ScrollView;   圖片加載優化要點   1. 有效加載大圖片,合理設置BitmapFactory.Options的inSampleSize值,減少圖片內存占用;   2. 僅請求圖片的大小,inJustDecodeBounds = true,僅請求圖片大小,而不會加載圖片到內存;   3. 緩存圖片,內存緩存LruCache,硬盤緩存 DiskLruCache;   4. 使用非UI線程加載圖片,使用 AsyncTask;   5. 使用軟引用SoftReference,綁定ImageView和url,處理ListView並發加載問   6. Android官方圖片加載利器BitmapFun解析
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved