999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

淺析在Android應用開發中對圖片加載的優化分析

2021-11-07 02:13:02胡暢霞陳娜劉曉星
電腦知識與技術 2021年25期

胡暢霞 陳娜 劉曉星

摘要:圖片作為Android應用中重要的資源信息,保證圖片資源的流暢顯示對用戶人機交互體驗的提升至關重要。該文作者以在ListView控件中加載圖片資源為例,首先簡述以傳統加載圖片的方式,隨后給出兩種優化方案:1)Adapter優化;2)引用Android Image Loader 框架。通過優化達到流暢加載圖片資源的效果,增強用戶體驗。

關鍵詞:圖片加載優化;Adapter優化; Android Image Loader框架

中圖分類號:TP311? ? ? 文獻標識碼:A

文章編號:1009-3044(2021)25-0078-02

1引言

圖片資源作為Android應用中不可或缺的資源,豐富著信息內容,使用戶更加容易理解界面傳達的信息。在實際開發中,因為程序需要經常連接網絡,且界面上存在著豐富的圖片資源,所以加載圖片時系統資源的消耗是巨大的。ListView控件作為Android中最常見的控件,因此需要加載網絡上的圖片資源時就經常需要用到ListView控件。為了使人機交互友好,就要保證圖片加載要得到快速的響應,盡量避免加載超時或者延時等現象。本文作者以在ListView控件中加載網絡圖片資源為例,淺析在Android開發中對圖片優化的如下幾種方法。

2傳統方式加載圖片資源

利用傳統方式在ListView中加載圖片資源,首先創建URL對象傳入網絡圖片的網址,網址必須是絕對路徑,得到圖片的數據流。在Android中,提供了BitmapFactory類,用于從不同的數據源來解析、創建Bitmap對象。Bitmap對象在如TextView 控件中顯示,最后關閉數據流。

示例代碼:

Bitmap bitmap = null;

URL url;

try {

url = new URL(“視頻網址”);

InputStreamiliu = url.openStream();

bitmap = BitmapFactory.decodeStream(iliu);

iliu.close();}

catch (Exception e) {e.printStackTrace();}

傳統方式簡單、直接、書寫簡單,但在UI主線程中執行聯網耗時操作,不但導致圖片資源加載速度慢,而且影響其他項的響應速度。

3利用Adapter優化的方式,加載圖片資源

在使用ListView 控件加載圖片資源時,Android引入Adapter機制作為復雜數據的展示和轉化的載體,Adapter作為ListView控件與數據源之間的“中介”,當每條數據進入到可見區時,Android會調用Adapter中的getView()方法來返回代表著具體數據的視圖,由于數據成千上萬,所以getView()方法被多次調用,因此通過減少getView()方法的調用次數來優化Adapter會提高加載圖片資源的加載速度。

3.1 利用ViewHolder模式優化Adapter

ViewHolder類是Android定義的一個靜態類,并不是在Android API中提供的方法。ViewHolder模式的存在,可以大大降低多余的findViewById()方法的調用,而是把使用控件的代碼放在ViewHolder類里面,然后把View.setTag(holder)放在view中,這樣再次使用時就可以直接調用。

利用ViewHolder模式優化Adapter,重復利用convertView回收視圖,減少getView()的調用次數達到優化的效果。這種模式加載圖片資源的操作還是在UI主線程中執行,在圖片資源數目少時,這種方法會有一定的效果,但是圖片資源量大時,依舊會阻塞UI主線程,導致程序的響應慢等現象,治標不治本。

3.2 利用工作線程加載數據

由于加載網絡圖片資源,既涉及聯網操作,又包含著大量的數據信息,因此我們需要為此操作重新開辟一個新的線程來減輕UI主線程的負擔。本文作者在Adapter中使用到的是輕量級AsyncTask工作線程處理方式:當程序需要啟動后臺線程來加載圖片資源時,使用該工作線程可以很容易做到,同時在UI線程中也能得到自動返回過來的結果。需要注意的是,使用AsyncTask時有如下幾點事項需要考慮:

1)創建AsyncTask實例的位置:須在主線程中;

2)調用AsyncTask的execute()方法的位置:須在主線程中;

3)AsyncTask類中的方法,如onPreExecute、onPostExecute、doInBackground和onProgressUpdate等,它們是由Android系統親自調用,程序員是不能寫代碼去調用的;

4)AsyncTask不能被多次調用,否則會拋出異常,所以只能被執行一次。

主要代碼如下:

class MyPictTaskextends AsyncTask {

WeakReferenceimgViewRef;

intshuliang = 0; public BitmapWorkerTask(ImageViewmyimageView) {

imgViewRef= new WeakReference(myimageView);? ? ?}

protected Bitmap doInBackground(Integer...params) {

主站蜘蛛池模板: 国产精品一区二区国产主播| 2020国产精品视频| 亚洲第一黄色网| 亚洲欧美天堂网| av性天堂网| 欧美日韩一区二区在线播放| 亚洲Av激情网五月天| 亚洲日韩精品欧美中文字幕| 午夜国产精品视频黄 | 九九九久久国产精品| 欧美色图第一页| 粉嫩国产白浆在线观看| 免费人成视网站在线不卡| 国内精品一区二区在线观看| 国产精品无码AV中文| 国产主播福利在线观看| 日韩av高清无码一区二区三区| 久久这里只有精品2| 国产亚洲精品在天天在线麻豆 | 亚洲综合中文字幕国产精品欧美| 一级毛片免费不卡在线视频| 亚洲综合极品香蕉久久网| 久草热视频在线| 午夜日本永久乱码免费播放片| 九九视频免费在线观看| 午夜丁香婷婷| 青青草国产在线视频| 国产精品毛片一区视频播| 亚洲成a人在线播放www| 麻豆精品在线视频| 人妻无码中文字幕第一区| 亚洲va欧美va国产综合下载| 欧美成人日韩| 日本高清视频在线www色| 国产精品浪潮Av| 国产女人18毛片水真多1| 毛片基地美国正在播放亚洲| 99久久成人国产精品免费| 国内老司机精品视频在线播出| 国产二级毛片| 亚洲精品777| 精品五夜婷香蕉国产线看观看| 免费a级毛片18以上观看精品| 中文字幕在线欧美| 色噜噜久久| 亚洲AV一二三区无码AV蜜桃| 国产成人1024精品| 欧美精品导航| 亚洲精品卡2卡3卡4卡5卡区| 久久人妻系列无码一区| 亚洲三级色| 国产白浆视频| 国产9191精品免费观看| 国产成人免费| 大陆精大陆国产国语精品1024| 热热久久狠狠偷偷色男同| 成人午夜视频在线| 亚洲国产欧美目韩成人综合| 国产不卡在线看| 国产成人精品男人的天堂| 全裸无码专区| 伊人色在线视频| 午夜a视频| 国产成人艳妇AA视频在线| a亚洲视频| 国产精品福利一区二区久久| 欧美午夜视频在线| 色综合热无码热国产| 波多野结衣在线se| 欧美成a人片在线观看| 亚洲视频免费在线看| 成年A级毛片| julia中文字幕久久亚洲| 114级毛片免费观看| 丁香六月综合网| 无码国产偷倩在线播放老年人| 国产精品手机在线观看你懂的| 国产欧美日韩资源在线观看| 5555国产在线观看| 欧美综合成人| 成人欧美日韩| 国产极品美女在线播放|