-
優(yōu)化異步加載要點(diǎn)查看全部
-
實(shí)現(xiàn)接口以后不要忘記要注冊,否則就白實(shí)現(xiàn)了查看全部
-
取消所有加載任務(wù)查看全部
-
直接通過URL獲取網(wǎng)絡(luò)數(shù)據(jù),返回一個(gè)字節(jié)流,字符流可以把字節(jié)流包裹,buffer又可以把字符流包起來查看全部
-
異步加載——Thread方式 1. 將url轉(zhuǎn)換成Bitmap 通過InputStream,調(diào)用BitmapFactory.decodeStream()方法將url String轉(zhuǎn)換成一個(gè)bitmap并返回。 public Bitmap getBitmapFromURL(String urlString) { Bitmap bitmap; InputStream is = null; try { URL url = new URL(urlString); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); is = new BufferedInputStream(connection.getInputStream()); //從urlString中獲取InputStream bitmap = BitmapFactory.decodeStream(is); //通過decodeStream獲取bitmap return bitmap; } 2. 從getBitmapFromURL()獲得的bitmap對象是不能直接設(shè)置給ImageView的 按照android單線程模型,非主線程是不能在此線程中直接更新UI的,可以通過一個(gè)Handler來傳遞帶有bitmap的消息給主線程,讓主線程的handler更新UI。 如圖: (1)開辟一個(gè)線程,在線程中將url轉(zhuǎn)換成bitmap (2)通過sendMessage()以消息的形式將bitmap發(fā)送給主線程的Handler (3)在Handler中設(shè)置bitmap給ImageView 3. 為了保證ListView每行數(shù)據(jù)中的ImageView能夠正確顯示,在Adapter的getView()方法中為每個(gè)ImageView設(shè)置一個(gè)tag String urlString = newsBean.imageUrl; viewHolder.imageView.setTag(urlString); 主線程的Handler中更新UI時(shí),會判斷這個(gè)tag,是否是對應(yīng)的。 if(mImageView.getTag().equals(urlString)) mImageView.setImageBitmap((Bitmap) msg.obj);查看全部
-
在異步加載中,當(dāng)網(wǎng)絡(luò)環(huán)境不是很好情況下,ListView本身的緩沖機(jī)制可能會造成ListView的item顯示錯(cuò)亂。 兩種方法可以避免這種問題: 1. 將當(dāng)前的item與原始數(shù)據(jù)綁定 例如上一筆記中,在Adapter的getView()方法中為每個(gè)ImageView設(shè)置一個(gè)url的tag String urlString = newsBean.imageUrl; viewHolder.imageView.setTag(urlString); 在主線程的Handler中真正加載進(jìn)行更新UI時(shí),會判斷這個(gè)tag是否是對應(yīng)的。只有當(dāng)tag是正確時(shí)才會真正做設(shè)置item的操作 if(mImageView.getTag().equals(urlString)) mImageView.setImageBitmap((Bitmap) msg.obj); 2. 使用成員變量將對應(yīng)的數(shù)據(jù)進(jìn)行緩存,這種方式就相當(dāng)于BaseAdapter中使用ViewHolder是一樣的。查看全部
-
Bitmap-刷新ListView加載: 問題是解決:緩存的圖片對正確的圖片加載時(shí)的影響~ 問題描述:圖片在刷新顯示的時(shí)候會刷新更改多次,并不是一次到位加載正確圖片。 問題分析:ListView會重用convertView,每一個(gè)ImageView并沒有唯一的標(biāo)識,多個(gè)LIstView中Item的加載在緩沖池中產(chǎn)生多個(gè)ImageView,在沒有Tag的情況下,重用convertView就會導(dǎo)致新的圖片在加載之前先顯示舊的圖片,根本原因是ListView中特定的Item沒有顯示正確的URL資源 解決方案:方法1-設(shè)置Tag:在首次加載時(shí)就為ImageView的標(biāo)簽,標(biāo)簽為正確的URL(身份驗(yàn)證信息):viewHolder.imageView.setTag(url),在handler中加載圖片時(shí)對標(biāo)簽進(jìn)行判斷,若符合,則加載。 方法2-設(shè)置成員變量:在showImageByThread中仿照ImageView的方式對URL進(jìn)行緩存,避免了網(wǎng)絡(luò)下載時(shí)間不確定導(dǎo)致的持續(xù)性的混亂查看全部
-
一、如何通過Url獲取網(wǎng)絡(luò)反饋的Json字符串結(jié)果: 1、重寫doInBackground(Params…) 獲取請求的網(wǎng)址,調(diào)用自定義方法getJson(String url); 2、自定義方法getJson中定義URL,獲取inputStream流 3、自定義方法readStream(InputStream is),將inputStream流中的字節(jié)流拼裝成字符串; 4、自定義方法getJson調(diào)用readeStream()方法,并將InputStream流作為參數(shù)傳遞。這樣既可獲得json串結(jié)果。查看全部
-
android 異步加載查看全部
-
解決listview加載圖片時(shí)卡頓的情況查看全部
-
程序的最后部分在滑動的時(shí)候不論本地是否有緩存均顯示默認(rèn)圖片,這樣在滑動結(jié)束后圖片會“閃爍”一下才能顯示真正的圖片,作為一個(gè)強(qiáng)迫癥受不了,所以稍微修改了適配器getView部分的代碼,如下: //如果緩存中已經(jīng)存在該圖片則設(shè)置緩存圖片否則設(shè)置默認(rèn)圖片 Bitmap bitmap = imageLoader.getBitmapFromCache(url); if (bitmap != null) { viewHolder.mIcon.setImageBitmap(bitmap); } else { viewHolder.mIcon.setImageResource(R.mipmap.ic_launcher); }查看全部
-
獲取網(wǎng)絡(luò)數(shù)據(jù)簡單粗暴的方式查看全部
-
我的文藝范查看全部
-
我就是一個(gè)有情懷的程序員哈哈哈查看全部
-
android異步加載查看全部
舉報(bào)
0/150
提交
取消