3

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

android.view.WindowManager$BadTokenException: 无法添加窗口——令牌android.os.BinderProxy@35f21ac 无效;您的活动正在运行吗?

我使用了 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);

现在,崩溃频率降低了,但应用程序仍然有时会崩溃。

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

4

1 回答 1

0

在此代码中粘贴您的代码

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 加载图像但我们的活动已经被破坏时,有时会发生此错误。

于 2018-03-11T06:27:52.730 回答