RecyclerView踩坑
position RecyclerView中position和ListView中position不一樣,前者的position(數(shù)據(jù)用的)是一直不變的,要想得到當(dāng)前控件所處的position,必須要通過(guò)holder.getLayoutPosition()(布局用的),拿到當(dāng)前的position,進(jìn)行操作數(shù)據(jù),尤其注意notifyItemChanged(position)和notifyItemInsert(position)
踩坑之bitmap,bimap 在android中是個(gè)魔鬼,時(shí)不時(shí)的照成OOM異常,讓我們內(nèi)心時(shí)常跳出很多個(gè)草泥馬,bitmap的問(wèn)題主要有以下幾個(gè)
bitmap 一次性的內(nèi)存不要超過(guò)8M,android默認(rèn)不會(huì)超過(guò)8M,如果一次性操過(guò)8M,就會(huì)產(chǎn)生令我們surprise的OOM。我遇見兩種產(chǎn)生的情況
第一種:處理圓角圖片的時(shí)候我發(fā)現(xiàn)圖片超過(guò)了8M,Bitmap.Config的ARGB設(shè)置成為了8888,如果對(duì)透明度沒(méi)要求的話,可以設(shè)置成為RGB565,還有一個(gè)經(jīng)常不用的是RGB4444,最最重要的是處理圓角圖片的一個(gè)很重要的問(wèn)題就是內(nèi)存不管怎么做,都會(huì)加大接近一倍,最好的方式是自定義一個(gè)圓角ImageView
第二種:一次性加載很多個(gè)圖片,導(dǎo)致內(nèi)存突然暴,但是一般情況下不會(huì)造成OOM異常,我們需要在合適的時(shí)候把bitmap進(jìn)行釋放,采用bitmap.recycler(),然后在使用bitmap=null,可以調(diào)用system.gc()機(jī)制遍歷下內(nèi)存釋放bitmap