【发布时间】:2011-12-28 20:28:25
【问题描述】:
我正在尝试使用异步请求从 url 中获取图像,以防止 url 挂起。这是我正在使用的这段代码
private void setImg(final ImageView im, String url){
AsyncHttpClient client = new AsyncHttpClient();
client.get(url, new AsyncHttpResponseHandler(){
public void onSuccess(String response){
try{
byte[] imageAsBytes = response.getBytes();
im.setImageBitmap(BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length));
im.refreshDrawableState();
} catch(Throwable e){
e.printStackTrace();
}
}
});
}
这总是在 logcat 中显示这个警告
12-29 01:55:33.043: D/skia(14414): --- SkImageDecoder::Factory returned null
我找不到合适的理由。有什么帮助吗?
【问题讨论】:
-
鉴于 Android 已经提供了一切方便的东西(HttpClient 和 AsyncTask)并且实现起来非常简单,创建/使用这个额外的第三方库 AsyncHttpClient 的意义何在。通过这样做,您将自己的应用程序置于依赖于其他人工作的风险中,您知道他们维护他们的项目的情况吗?自己做吧。
-
它是一个积极维护的项目,它为我提供了很多能力,这将花费我很多时间从头开始。
-
您是否检查过 1) 您检索的字节实际上代表一个图像(而不是例如一些未解析的重定向或 html 内容),以及 2) 您没有尝试读取内容(通常是 InputStream ) 你的 AsyncHttpClient 中的 http 响应两次?
-
1. onSucess 是什么意思?完全响应,完全到达还是仅 200 行?如果只有 200 ok,你的 http 客户端是否还有其他回调给你额外的字节? 2.您可以尝试将字节写入磁盘并使用十六进制编辑器将它们与您将使用 curl 等下载的图像进行比较吗? 3. 会不会是图片太大了,你应该在解析时使用'Options' clss 让它变小?
标签: android bitmap android-asynctask android-imageview