星期三, 6月 29, 2016

有效率地顯示Bitmap(一)

為什麼Android app開發人員需要注意Bitmap的使用?


開發過Android app的工程師多半懂如何有效率地加載Bitmap,以維持使用者介面的響應和避免過度使用應用程式的記憶體。如果不關心Bitmap的加載,Bitmap將快速地消耗應用程式可用的記憶體,並導致應用程式因為
java.lang.OutOfMemoryError: bitmap size exceeds VM budget.
的例外而崩潰。

以下幾個原因造成應用程式加載Bitmap的工作更為複雜。

  • 行動手機通常有限制系統資源。對於單一應用程式Android裝置最少只需16MB的可用記憶體,應用程式應該優化使在最小記憶體的限制下能運行。不過,許多裝置都配置較高的限制。

  • Bitmap占用許多記憶體,特別是富含圖片的功能如相簿。舉例來說,Galaxy Nexus上的相機拍的相片高達5290x1936象素。如果Bitmap配置是使用ARGB_8888,加載一張相片到記憶體大約需要19M的記憶體(5290x1936x4 bytes),瞬間就超過一些裝置的應用程式記憶體限制。

  • 應用程式的使用者介面往往需要一次加載許多的Bitmap,元件如ListView、GridView和ViewPager通常在螢幕上一次都包含許多Bitmap,並有更多超出螢幕以外的Bitmap準備顯示。


既然我們常常使用Bitmap,而Bitmap又容易消耗應用程式可用的記憶體,接下來的相關文章將介紹如何有效率地加載Bitmap物件,使應用程式能順利加載Bitmap並運行。