android - 由于高分辨率图像导致应用程序崩溃

标签 android android-glide image-compression image-resolution

在我的应用程序中,我为用户提供了为应用程序的主屏幕背景(来自图库)设置图像的功能。如果图像分辨率低,应用程序可以正常工作,但如果用户设置高分辨率图像,应用程序会在启动时崩溃并出现此错误。

android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@35f21ac is not valid; is your activity running?

我使用了glide的override方法来降低图片的分辨率:

Glide.with(MainActivity.this).asBitmap()
    .apply(new RequestOptions().diskCacheStrategy(DiskCacheStrategy.RESOURCE).dontAnimate())
    .load(storageUtil.getWallpaperStatus())
    .apply(new RequestOptions().override(320,640).centerCrop())
    .into(viewPagerBackground);

现在,崩溃频率已经降低,但应用有时仍会崩溃。

这个问题的最佳解决方案是什么?

最佳答案

在此代码中粘贴您的代码

if(!((Activity) context).isFinishing())
{
    //your code 
Glide.with(MainActivity.this).asBitmap()
                    .apply(new RequestOptions().diskCacheStrategy(DiskCacheStrategy.RESOURCE).dontAnimate())
                    .load(storageUtil.getWallpaperStatus())
                    .apply(new RequestOptions().override(320,640).centerCrop())
                    .into(viewPagerBackground);
}

当我们使用 glide 加载图像但我们的 Activity 已经被销毁时,有时会发生此错误。

关于android - 由于高分辨率图像导致应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49217046/

相关文章:

android - 如何使 Glide 显示像 picasso ?

image - 我的 .jpg 文件比 .png 大?

php - 使用 php (jpeg) 优化上传的图像

android - Google map Activity 无法启动

android - 为什么新的 google places api 不与 build.gradle 同步?

都使用 Glide 的 Android 应用程序和库 - appPackage1.GlideRequests 无法转换为 appPackage2.GlideRequests

java - 类似于 TinyPNG for Java 的库 - 压缩图像大小

java - 获取系统时间精确​​到 0.1ms(100 微秒)

java - Kotlin 中类和对象的区别

android - 我可以使用 Glide 来缓存图像而不显示它们吗