Android Glide 图片下载问题
Android Image Download problem with Glide
我开始遇到 Glide 图片下载问题。
我的应用程序是 运行 Glide 版本 4.8.0 和 minSdkVersion 21
、targetSdkVersion 26
和 compileSdkVersion 28
。
问题是 Glide 无法从 Apple News 下载图像并导致它锁定和崩溃应用程序。图片的URL为https://c.apple.news/AgEXQU9SSmFycEhYUUVlSkxKUE52XzN1M1EAMA
执行图片下载的代码是:
Glide.with(context)
.setDefaultRequestOptions(getRequestOptionsForImage(item.ContentPersonStatusUpdate.widthURLImageWidth,context.getResources().getDimensionPixelSize(R.dimen.image_height_external_link),context))
.asBitmap()
.load(https://c.apple.news/AgEXQU9SSmFycEhYUUVlSkxKUE52XzN1M1EAMA)
.into(imageViewContent);
public static RequestOptions getRequestOptionsForImage(int width, int height, Context context){
return new RequestOptions().skipMemoryCache(true).diskCacheStrategy(DiskCacheStrategy.AUTOMATIC).override(width,height).placeholder(context.getDrawable(R.drawable.ic_news_thumbnail_loading));
}
关于这个问题有任何idea/solution吗?此问题仅发生在 Apple News Image URLs.
***更新
我试过用下面的代码下载图片。得不到任何回应,连抓到都不开火。
new DownloadImageTask(imageViewContent).execute(https://c.apple.news/AgEXQU9SSmFycEhYUUVlSkxKUE52XzN1M1EAMA);
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage;
public DownloadImageTask(ImageView bmImage) {
this.bmImage = bmImage;
}
protected Bitmap doInBackground(String... urls) {
String urldisplay = urls[0];
Bitmap bmp = null;
try {
InputStream in = new java.net.URL(urldisplay).openStream();
bmp = BitmapFactory.decodeStream(in);
} catch (Exception e) {
e.printStackTrace();
}
return bmp;
}
protected void onPostExecute(Bitmap result) {
bmImage.setImageBitmap(result);
}
}
Serkan 你的代码除了请求选项部分是正确的。
我尝试了下面的代码并且工作正常:
String url="https://c.apple.news/AgEXQU9SSmFycEhYUUVlSkxKUE52XzN1M1EAMA";
RequestOptions requestOptions = new RequestOptions();
requestOptions.error(R.drawable.img_placeholder);
Glide.with(context)
.setDefaultRequestOptions(requestOptions)
.load(url)
.into(imgImage);
我也试过你的代码,没有像下面这样的请求选项:
Glide.with(context)
.asBitmap()
.load(url)
.into(imgImage);
也工作得很好
当我尝试使用您的请求选项代码时,它告诉我使用@RequiresApi(LOLLIPOP) 注释。可能您正在下面 api 中测试应用程序并且该方法不起作用。
我开始遇到 Glide 图片下载问题。
我的应用程序是 运行 Glide 版本 4.8.0 和 minSdkVersion 21
、targetSdkVersion 26
和 compileSdkVersion 28
。
问题是 Glide 无法从 Apple News 下载图像并导致它锁定和崩溃应用程序。图片的URL为https://c.apple.news/AgEXQU9SSmFycEhYUUVlSkxKUE52XzN1M1EAMA
执行图片下载的代码是:
Glide.with(context)
.setDefaultRequestOptions(getRequestOptionsForImage(item.ContentPersonStatusUpdate.widthURLImageWidth,context.getResources().getDimensionPixelSize(R.dimen.image_height_external_link),context))
.asBitmap()
.load(https://c.apple.news/AgEXQU9SSmFycEhYUUVlSkxKUE52XzN1M1EAMA)
.into(imageViewContent);
public static RequestOptions getRequestOptionsForImage(int width, int height, Context context){
return new RequestOptions().skipMemoryCache(true).diskCacheStrategy(DiskCacheStrategy.AUTOMATIC).override(width,height).placeholder(context.getDrawable(R.drawable.ic_news_thumbnail_loading));
}
关于这个问题有任何idea/solution吗?此问题仅发生在 Apple News Image URLs.
***更新
我试过用下面的代码下载图片。得不到任何回应,连抓到都不开火。
new DownloadImageTask(imageViewContent).execute(https://c.apple.news/AgEXQU9SSmFycEhYUUVlSkxKUE52XzN1M1EAMA);
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage;
public DownloadImageTask(ImageView bmImage) {
this.bmImage = bmImage;
}
protected Bitmap doInBackground(String... urls) {
String urldisplay = urls[0];
Bitmap bmp = null;
try {
InputStream in = new java.net.URL(urldisplay).openStream();
bmp = BitmapFactory.decodeStream(in);
} catch (Exception e) {
e.printStackTrace();
}
return bmp;
}
protected void onPostExecute(Bitmap result) {
bmImage.setImageBitmap(result);
}
}
Serkan 你的代码除了请求选项部分是正确的。 我尝试了下面的代码并且工作正常:
String url="https://c.apple.news/AgEXQU9SSmFycEhYUUVlSkxKUE52XzN1M1EAMA";
RequestOptions requestOptions = new RequestOptions();
requestOptions.error(R.drawable.img_placeholder);
Glide.with(context)
.setDefaultRequestOptions(requestOptions)
.load(url)
.into(imgImage);
我也试过你的代码,没有像下面这样的请求选项:
Glide.with(context)
.asBitmap()
.load(url)
.into(imgImage);
也工作得很好
当我尝试使用您的请求选项代码时,它告诉我使用@RequiresApi(LOLLIPOP) 注释。可能您正在下面 api 中测试应用程序并且该方法不起作用。