RuntimeException(whenClosed)的处理方案
  发布时间:2023-01-25 21:30:02
 在Android中,可以在onStop()方法中取消加载图片,例如另外,在使用 Glide 加载图片的时候,使用 .dontAnimate() 去除动画效果,这样可以避免一些不必要的错误。如果使用的是 fragment 可以在 onDestroyView() 中进行清除这样就可以避免在应用程序或活动关闭时出现的问题。使用例子是的,可以这样使用 Glide 加载图片,在 Activity 中在 Fragment 中这样就可以在onStop()和onDestroyView()中取消加载图片,避免出现错误。
 报错的原因
在Java中,Glide在加载图片时可能会出现RuntimeException(whenClosed)错误。这通常是由于在关闭应用程序或活动之前尝试加载图片导致的。当应用程序或活动关闭时,Glide会关闭其内部资源,如果此时尝试加载图片,就会导致此错误。
如何解决
可以在应用程序或活动关闭之前取消加载图片,以避免这种错误。在Android中,可以在onStop()方法中取消加载图片,例如:
    @Override
    protected void onStop() {
        super.onStop();
        Glide.with(this).clear(imageView);
    }
另外,在使用 Glide 加载图片的时候,使用 .dontAnimate() 去除动画效果,这样可以避免一些不必要的错误。
如果使用的是 fragment 可以在 onDestroyView() 中进行清除
    @Override
    public void onDestroyView() {
        super.onDestroyView();
        Glide.with(this).clear(imageView);
    }
这样就可以避免在应用程序或活动关闭时出现的问题。
使用例子
是的,可以这样使用 Glide 加载图片,在 Activity 中:
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ImageView imageView = findViewById(R.id.imageView);
        String url = "https://image.example.com/image.jpg";
        Glide.with(this)
            .load(url)
            .into(imageView);
    }
    @Override
    protected void onStop() {
        super.onStop();
        Glide.with(this).clear(imageView);
    }
在 Fragment 中:
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_image, container, false);
        ImageView imageView = view.findViewById(R.id.imageView);
        String url = "https://image.example.com/image.jpg";
        Glide.with(this)
            .load(url)
            .into(imageView);
        return view;
    }
    @Override
    public void onDestroyView() {
        super.onDestroyView();
        Glide.with(this).clear(imageView);
    }
这样就可以在onStop()和onDestroyView()中取消加载图片,避免出现"RuntimeException(whenClosed)"错误。
