Сбой приложения из-за изображения с высоким разрешением

В моем приложении я даю пользователю возможность установить изображение для фона рабочего стола приложения (из галереи). Приложение работает нормально, если изображение имеет низкое разрешение, но если пользователь устанавливает изображение с высоким разрешением, приложение при запуске вылетает с этой ошибкой.

android.view.WindowManager $ BadTokenException: невозможно добавить окно - токен android.os.BinderProxy@35f21ac недействителен; ваша деятельность работает?

Я использовал метод переопределения скольжения, чтобы уменьшить разрешение изображения:

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

Теперь частота сбоев уменьшилась, но иногда приложение вылетает.

Что может быть лучшим решением для этой проблемы?

1 ответ

Вставьте свой код в этот код

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, но наша деятельность уже уничтожена.

Другие вопросы по тегам