亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android編程使用緩存優化ListView的方法

2020-04-11 11:05:57
字體:
來源:轉載
供稿:網友

本文實例講述了Android編程使用緩存優化ListView的方法。分享給大家供大家參考,具體如下:

ListView調用Adapter的getView方法獲取每一個Item布局,將這些已經獲得的Item布局放入緩存,將大大提高獲取數據的效率,而且節省更多的流量,將數據進行緩存有兩種方法是,一種是將內存緩存一種是sd卡緩存,在此分別進行演示。

sd卡緩存:

sd卡緩存是將下載的數據保存到sd卡中,當再次要獲取數據時,首先要判斷sd卡中是否存在,如果存在的話,就直接讀取sd卡中的數據,如果不存在就從網上下載,然后保存到sd卡中

內存緩存:

內存優化是將獲取到的數據存取到Map集合中,如果再次引用此數據,就直接從Map集合中獲取,這樣會導致一個問題,如果Map集合中的數據特別多,比如存取了100萬條數據,這樣有可能就會導致內存溢出。這是因為Map集合是強引用的集合,如何不把Map集合置為空的話,這個集合Java虛擬機就不會把它回收掉,當Map中的數據大小超過了內存大小就會導致內存溢出。為了避免這種異常我們要使用軟引用softreference ,軟引用和強引用的區別如下:

1. softreference 他是java虛擬機給我們提供的一個包裝類型.

在包裝類型里面的對象 一般情況下 ,java虛擬機會盡量長時間的保留這個對象
當java虛擬機內存不足的時候 java虛擬機就會回收 softreference里面的對象

2. hardreference 默認new出來的對象 都是這種強應用的類型

只要一個對象還保留的有引用,他就不會被垃圾回收

Map<String,Bitmap> map;

核心代碼:

sd卡緩存

public class MyReadAdapter extends BaseAdapter{ private List<CollectionEntry> entrys; public MyReadAdapter(CollectionFeed feeds) {  entrys = feeds.getEntries(); } public int getCount() {  return entrys.size(); } public Object getItem(int position) {  return entrys.get(position); } public long getItemId(int position) {  return position; } public View getView(int position, View convertView, ViewGroup parent) {  View view = infalter.inflate(R.layout.myread_item, null);  final ImageView iv = (ImageView) view.findViewById(R.id.book_img);  //獲取數據實體  CollectionEntry ce = entrys.get(position);  //獲取圖片地址  String iconurl = ce.getSubjectEntry().getLink("image", null).getHref();  int start = iconurl.lastIndexOf("/");  int end = iconurl.length();  final String iconname = iconurl.substring(start, end);  //Environment.getExternalStorageDirectory()這個是sd卡目錄  File file = new File(Environment.getExternalStorageDirectory(),iconname);  //獲取sd卡緩存  if(file.exists()){   iv.setImageURI(Uri.fromFile(file));   Log.i(TAG,"使用sd卡圖片");  }else{   new LoadImageAsynTask(new ImageTaskCallback() {   // 圖片獲取之后   public void onImageLoaded(Bitmap bitmap) {    if(bitmap!=null){    iv.setImageBitmap(bitmap);    //把圖片存到sd卡上    if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){     try {      File file = new File(Environment.getExternalStorageDirectory(),iconname);      FileOutputStream fos = new FileOutputStream(file);      bitmap.compress(CompressFormat.JPEG, 100, fos);     } catch (Exception e) {      e.printStackTrace();     }    }    }else{     iv.setImageResource(R.drawable.book);    }   }   //圖片獲取之前   public void beforeImageLoaded() {    iv.setImageResource(R.drawable.book);   }  }).execute(iconurl);  }  return view; }}

內存緩存

Map<String,SoftReference<Bitmap>> map;public class MyReadAdapter extends BaseAdapter{ private List<CollectionEntry> entrys; public MyReadAdapter(CollectionFeed feeds) {  entrys = feeds.getEntries(); } public int getCount() {  return entrys.size(); } public Object getItem(int position) {  return entrys.get(position); } public long getItemId(int position) {  return position; } public View getView(int position, View convertView, ViewGroup parent) {  View view = infalter.inflate(R.layout.myread_item, null);  final ImageView iv = (ImageView) view.findViewById(R.id.book_img);  //獲取到數據的實體  CollectionEntry ce = entrys.get(position);  //獲取到圖片的Url  String iconurl = ce.getSubjectEntry().getLink("image", null).getHref();  int start = iconurl.lastIndexOf("/");  int end = iconurl.length();  final String iconname = iconurl.substring(start, end);  //使用內存緩存  if(map!=null && map.get(iconname)!=null){   iv.setImageBitmap(map.get(iconname).get());   Log.i(TAG,"使用內存緩存");  }  else{  new LoadImageAsynTask(new ImageTaskCallback() {   // 圖片獲取之后   public void onImageLoaded(Bitmap bitmap) {    if(bitmap!=null){    iv.setImageBitmap(bitmap);    //存放到內存中,    //軟引用類型的bitmap    map.put(iconname, new SoftReference<Bitmap>(bitmap));    }else{     iv.setImageResource(R.drawable.book);    }   }   //圖片獲取之前   public void beforeImageLoaded() {    iv.setImageResource(R.drawable.book);   }  }).execute(iconurl);  }  return view; }}

希望本文所述對大家Android程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品国产高清自在线看超| 精品国产一区二区在线| 九九热这里只有精品免费看| 欧美精品在线观看| 国产午夜精品全部视频播放| 成人午夜在线观看| 日韩在线观看免费高清完整版| 国产精品自产拍在线观看| 俺去亚洲欧洲欧美日韩| 国产日产亚洲精品| 午夜精品久久久久久久99热| 视频一区视频二区国产精品| 在线播放日韩欧美| 亚洲美女性生活视频| 色久欧美在线视频观看| 日韩在线观看免费高清| 亚洲福利精品在线| 欧美夫妻性生活xx| 精品视频一区在线视频| 日韩激情av在线免费观看| 91在线免费观看网站| 在线观看日韩专区| 日韩中文字幕第一页| 97色在线播放视频| 亚洲成人黄色在线观看| 欧美精品videosex极品1| 国产九九精品视频| 日韩精品www| 在线观看中文字幕亚洲| 欧美电影免费播放| 精品香蕉一区二区三区| 久久伊人精品视频| 欧美精品一区二区免费| 亚洲一区免费网站| 欧美亚洲激情视频| 中文字幕精品久久| 国产成人综合精品| 91国内精品久久| 欧美成人h版在线观看| 中文字幕国产日韩| 欧美日韩亚洲激情| 欧美中文字幕在线视频| 中文字幕一区电影| 91sa在线看| 久久69精品久久久久久国产越南| 亚洲免费福利视频| 欧美高跟鞋交xxxxxhd| 国产精品对白刺激| 亚洲精品黄网在线观看| 亚洲女成人图区| 亚洲国产精品99| 国产精品一区av| 欧美成人四级hd版| 欧美性xxxx在线播放| 欧美电影在线播放| 久久久久久久网站| 这里只有精品在线观看| 亚洲欧美日韩精品久久亚洲区| 久久久久久久久久久久久久久久久久av| 久久精品久久精品亚洲人| 91精品国产高清| 欧美视频在线看| 成人444kkkk在线观看| 88国产精品欧美一区二区三区| 国产成人精品久久二区二区91| 亚洲精品国产成人| 国产精品a久久久久久| 成人黄在线观看| 欧美成aaa人片免费看| 神马国产精品影院av| 国产综合福利在线| 欧美另类极品videosbest最新版本| 成人444kkkk在线观看| 一本久久综合亚洲鲁鲁| 在线午夜精品自拍| 亚洲国产中文字幕久久网| 色婷婷综合成人| 热久久免费国产视频| 国产精品永久在线| 亚洲精品suv精品一区二区| 91在线观看免费高清| 国产成人精品最新| 日韩欧美视频一区二区三区| 欧美中文在线视频| 亚洲大胆人体视频| 国产伊人精品在线| y97精品国产97久久久久久| 在线精品高清中文字幕| 亚洲国产美女精品久久久久∴| 性欧美长视频免费观看不卡| 日韩中文字幕免费| 日韩免费高清在线观看| 欧美午夜性色大片在线观看| 91精品久久久久久久久久久| 亚洲天天在线日亚洲洲精| 国模吧一区二区| 欧美国产一区二区三区| 日韩av片免费在线观看| 欧美性xxxxx| 欧美激情视频网址| 97久久精品国产| 欧美极度另类性三渗透| 欧美激情在线一区| 欧美与黑人午夜性猛交久久久| 亚洲精品国精品久久99热一| 国产精品午夜一区二区欲梦| 国产精品美女主播| 亚洲国语精品自产拍在线观看| 日韩高清免费在线| 91啪国产在线| 国产精品大片wwwwww| 日韩在线观看你懂的| 福利二区91精品bt7086| 欧美激情一区二区三级高清视频| 欧美中文字幕在线播放| 日韩欧美在线第一页| 成人两性免费视频| 国产精品久久久久不卡| 色天天综合狠狠色| 国产精品视频导航| 欧美夫妻性生活xx| 成人av番号网| 尤物99国产成人精品视频| 亚洲精品免费在线视频| 黄色一区二区在线| 热99精品里视频精品| 久久视频中文字幕| 久久久极品av| 全色精品综合影院| 亚洲人午夜精品免费| 中文字幕亚洲欧美日韩2019| 中文字幕自拍vr一区二区三区| 国产一区二区三区日韩欧美| 日韩中文字幕网| 久久综合亚洲社区| 国产视频久久久久久久| 亚洲欧美国产日韩中文字幕| 国产精品久久久久久五月尺| 91大神福利视频在线| 日本精品久久电影| 国产日本欧美一区| 亚洲激情中文字幕| 精品国产成人在线| 日韩中文字幕免费看| 97视频在线观看播放| 亚洲伊人久久大香线蕉av| 亚洲老头老太hd| 日韩av在线直播| 日韩精品高清在线观看| 亚洲国产精品久久| 欧美激情在线一区| 懂色av中文一区二区三区天美| 久久噜噜噜精品国产亚洲综合| www.99久久热国产日韩欧美.com| 亚洲一级黄色片| 国产精品精品久久久久久| 国内精品久久久久影院优| 欧美日韩在线观看视频小说| 在线观看中文字幕亚洲| 成人美女免费网站视频| 亚洲精品视频免费| 欧美日韩国产限制| 中文字幕亚洲欧美日韩在线不卡| 欧美性xxxxxx|