第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

數(shù)組越界異常 求解決?。?!

http://img1.sycdn.imooc.com//565e9ed10001599006000489.jpg

package com.example.imooc;


import java.io.BufferedInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.net.HttpURLConnection;

import java.net.URL;

import java.util.HashSet;

import java.util.Set;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.os.AsyncTask;

import android.os.Handler;

import android.os.Message;

import android.support.v4.util.LruCache;


import android.widget.ImageView;

import android.widget.ListView;


public class ImageLoader {

private ImageView mImageView;

private String murl;

private LruCache<String, Bitmap> mCaches;

private ListView mListView;

private Set<MyAsyncTask> mTask;


public ImageLoader(ListView listView) {

mListView=listView;

mTask=new HashSet<ImageLoader.MyAsyncTask>();

int maxMemory = (int) Runtime.getRuntime().maxMemory();

int cacheSize = maxMemory / 4;

mCaches = new LruCache<String, Bitmap>(cacheSize) {

@Override

protected int sizeOf(String key, Bitmap value) {


// 在每次存入緩存的時(shí)候調(diào)用

return value.getByteCount();


}

};

}


// 添加到緩存,put()

public void addBitmapToCache(String url, Bitmap bitmap) {

if (getBitmapFromCache(url) == null) {

mCaches.put(url, bitmap);

}

}


// 緩存中提取數(shù)據(jù) get()

public Bitmap getBitmapFromCache(String url) {

return mCaches.get(url);

}


private Handler mHandler = new Handler() {

public void handleMessage(Message msg) {

super.handleMessage(msg);

if (mImageView.getTag().equals(murl)) {

mImageView.setImageBitmap((Bitmap) msg.obj);

}


}

};


public void showImageByThread(ImageView imageView, final String url) {

mImageView = imageView;

murl = url;

new Thread() {

@Override

public void run() {

super.run();

Bitmap bitmap = getBitmapFromURL(url);

Message message = Message.obtain();

message.obj = bitmap;

mHandler.sendMessage(message);


}

}.start();

}


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());

bitmap = BitmapFactory.decodeStream(is);

connection.disconnect();


// 這個(gè)忘記return bitmap后 message無法打包bitmap 導(dǎo)致程序崩潰??!。

return bitmap;

} catch (IOException e) {


e.printStackTrace();

} finally {

try {

is.close();

} catch (IOException e) {


e.printStackTrace();

}

}

return null;

}


public void showImageByAsyncTask(ImageView imageView, String url) {

// 從緩存中提取圖片

Bitmap bitmap = getBitmapFromCache(url);

// 如果沒有,就到網(wǎng)絡(luò)中下載。如果有,直接提取。

if (bitmap == null) {

imageView.setImageResource(R.drawable.ic_launcher);

} else {

imageView.setImageBitmap(bitmap);

}


}

public void cancelAllTasks(){

if (mTask!=null) {

for (MyAsyncTask task: mTask) {

task.cancel(false);

}

}

}


public void loadImages(int start,int end){

for (int i = start; i < end; i++) {

String url =MyAdapter.URLS[i];

// 從緩存中提取圖片

Bitmap bitmap = getBitmapFromCache(url);

// 如果沒有,就到網(wǎng)絡(luò)中下載。如果有,直接提取。

if (bitmap == null) {

MyAsyncTask task=new MyAsyncTask(url);

task.execute();

mTask.add(task);

} else {

ImageView imageView=(ImageView) mListView.findViewWithTag(url);

imageView.setImageBitmap(bitmap);

}


}

}

public class MyAsyncTask extends AsyncTask<String, Void, Bitmap> {

// private ImageView mImageView;

private String murl;


public MyAsyncTask(String url) {

// mImageView = imageView;

murl = url;

}


@Override

protected Bitmap doInBackground(String... arg0) {

String url = arg0[0];

// 獲取圖片,將圖片保存到cache;

Bitmap bitmap = getBitmapFromURL(url);

if (bitmap !=null) {

// 將不在緩存的圖片加入緩存;

addBitmapToCache(url, bitmap);

}

return bitmap;

}


@Override

protected void onPostExecute(Bitmap result) {


super.onPostExecute(result);

ImageView imageView=(ImageView) mListView.findViewWithTag(murl);

if (imageView!=null && result!=null) {

imageView.setImageBitmap(result);

}


}


}

}


正在回答

2 回答

InputStream is = null;

try {

URL url = new URL(urlString);

HttpURLConnection connection = (HttpURLConnection) url

.openConnection();

is = new BufferedInputStream(connection.getInputStream());

用InputStream 接收沒問題吧,

感覺是url沒獲取到數(shù)據(jù)。所以異常

@Override

protected Bitmap doInBackground(String... arg0) {

String url = arg0[0];

斷點(diǎn)看看。是不是這里獲取失敗

0 回復(fù) 有任何疑惑可以回復(fù)我~

報(bào)錯(cuò)的是哪一行在代碼里面標(biāo)出來

難道要復(fù)制代碼自己找嗎


0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消
Android必學(xué)-異步加載
  • 參與學(xué)習(xí)       50617    人
  • 解答問題       326    個(gè)

了解Android中的異步加載處理方法,這是面試問的最多的知識(shí)點(diǎn)

進(jìn)入課程

數(shù)組越界異常 求解決?。?!

我要回答 關(guān)注問題
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)