在Android中使用OkHttp简单加载一个图片,运行时出现了以下多个异常,
然后直接停止运行,请问有没有碰到类似的问题?要怎么解决?感谢!
具体代码如下:
OkHttpClient mOkHttpClient;
private final String imageUrl="
http://avatar.csdn.net/9/7/A/1_zhangphil.jpg%22
;
byte[] bytes;
ImageView mImageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mOkHttpClient = new OkHttpClient();
Request mRequest=new Request.Builder().url(imageUrl).build();
mImageView=(ImageView) findViewById(R.id.imgView);
Call mCall=mOkHttpClient.newCall(mRequest);
//请求加入队列
mCall.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
//此处处理请求失败的逻辑
}
@Override
public void onResponse(Call call, Response response) throws IOException {
//Response代表OkHttp从服务器取得的响应数据包
if (response.isSuccessful())
//response.body()是图片的字节数据
bytes=response.body().bytes();
//response.body().close();//可选
final Bitmap bitmap= BitmapFactory.decodeByteArray(bytes,0,bytes.length);
//回调是运行在非Andorid UI主线程
//数据请求成功后,切换到Andorid UI主线程中更新
runOnUiThread(new Runnable() {
@Override
public void run() {
//网络图片请求成功,更新到主线程的ImageView
mImageView.setImageBitmap(bitmap);
}
});
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
mOkHttpClient.dispatcher().cancelAll();
}