《android內(nèi)存》ppt課件

《android內(nèi)存》ppt課件

ID:27094993

大小:495.51 KB

頁數(shù):21頁

時間:2018-12-01

《android內(nèi)存》ppt課件_第1頁
《android內(nèi)存》ppt課件_第2頁
《android內(nèi)存》ppt課件_第3頁
《android內(nèi)存》ppt課件_第4頁
《android內(nèi)存》ppt課件_第5頁
資源描述:

《《android內(nèi)存》ppt課件》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、android內(nèi)存管理──朱鵬自我介紹朱鵬Android開發(fā)工程師qq:752061935手機:15618953973二手房租房新房WhyAndroid系統(tǒng)有自己的垃圾回收機制,可以自動回收內(nèi)存空間。那為什么還需要專門做個針對內(nèi)存管理做一個分享呢?答案很簡單:crash!!!Bitmap談到android內(nèi)存管理這里不得不提的一個對象就是Bitmap。內(nèi)存大戶而一個andriod程序運行過程中所占用的內(nèi)存(native+dalvik)超過>16M(默認)OOM查看內(nèi)存使用情況adbshelldumpsysmeminfo$pac

2、kage_nameor$pidBitmap對象bitmap對象android虛擬機(DVM)linux底層C內(nèi)存recycle()首先明確一點無論你調(diào)用不調(diào)用recycle()方法,android程序都不會內(nèi)存泄露。recycle只做了一件事:Thebitmapismarkedas'dead'。recycle真的用途在于:它可以幫助GC快速決定是否回收這個對象,當一個應(yīng)用包含大量的圖片的時候,這個方法還是很有作用的,因為GC并沒有你想象的聰明。recycle()具體使用//先判斷是否已經(jīng)回收if(bitmap!=null&&!

3、bitmap.isRecycled()){//回收并且置為nullbitmap.recycle();bitmap=null;}這里再介紹一個比較實用的方法if(imageView!=null&&imageView.getDrawable()!=null){BitmapoldBitmap=((BitmapDrawable)imageView.getDrawable()).getBitmap();imageView.setImageDrawable(null);if(oldBitmap!=null){oldBitmap.recyc

4、le();}}建議在一個大量使用圖片的應(yīng)用中activity繼承以下BaseActivitypublicclassBaseActivity{ArrayList>bitmapCache=newArrayList>();@OverrideprotectedvoidonDestroy(){for(SoftReferencesb:bitmapCache){回收操作}super.onDestroy();}}bitmap什么時候會導(dǎo)致程

5、序OOM單張圖片過大解決方案:1、調(diào)整dvm單個堆棧大小2、壓縮圖片3、切割圖片小圖片累積過多解決方案:1、用完即手動recycle圖片壓縮小技巧在使用BitmapFactory壓縮圖片的時候,BitmapFactory.Options設(shè)置inJustDecodeBounds為true后,再使用decodeFile()等方法,可以在不分配空間狀態(tài)下計算出圖片的大小。示例:BitmapFactory.Optionsopts=newBitmapFactory.Options();//設(shè)置inJustDecodeBounds為tru

6、eopts.inJustDecodeBounds=true;//使用decodeFile方法得到圖片的寬和高BitmapFactory.decodeFile(path,opts);//打印出圖片的寬和高Log.d("example",opts.outWidth+","+opts.outHeight);(ps:原理其實就是通過圖片的頭部信息讀取圖片的基本信息)Bitmap在listview和gallery中的典型使用Map>mBitmapList;publicvoidlo

7、adImage(imageView,url){1、根據(jù)url從內(nèi)存即mBitmapList讀取地圖,如果內(nèi)存沒有讀到圖片則進行第二步。2、根據(jù)url讀取本地圖片,如果沒有讀取到,則進行第三步。3、將url加入下載隊列,下載成功后將bitmap加入內(nèi)存緩存即mBitmapList。}ps:在listview和gallery滑動的過程中可以不斷手動recycle()不用的bitmap對象,維持內(nèi)存緩存mBitmapList固定大小,這樣可以減小oom發(fā)生的概率。gallery的問題經(jīng)過以上處理之后你會發(fā)現(xiàn)listview很好用了,

8、很難在發(fā)生OOM。但是你會發(fā)現(xiàn)一個問題,這種方法在gallery上總是不好用,要不是出現(xiàn)OOM,就是拋出異常trytorecycleausingbitmap。這是為什么呢?gallery相關(guān)的adapter的常見寫法classGalleryAdapterextendsBase

當前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。