您的位置:

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)"错误。