为什么使用View.getContext()不受欢迎?

时间:2017-10-08 10:09:38

标签: android image asynchronous android-lifecycle android-glide

我正面临Glide的问题

You cannot start a load for a destroyed activity

我没有看到这次崩溃我只是报告发生这种情况,然后我检查了我的代码,我看到我写道:

public static void setImageWithGlide(Context context, String imageUrl, ImageView imageView) {
    if (context != null && imageView != null)
        Glide.with(context).load(imageUrl)
                .dontAnimate().into(imageView);
}

所以,我做了一些阅读,看到人们正在使用

1 - Context,就像我做的那样

2 - “应用程序上下文”,完全不是很好的理由

3 - 从View本身获取上下文,所以在我的情况下它将成为:

public static void setImageWithGlide(String imageUrl, ImageView imageView) {
    if (imageView != null && imageView.getContext() != null)
        Glide.with(imageView.getContext()).load(imageUrl)
                .dontAnimate().into(imageView);
}

我不知道这是否能解决问题,但为什么这种获取上下文的方式不受欢迎?不使用它的原因是什么?它还节省了传递给方法的上下文(对于我个人来说并不是那么好,因为我想知道这个方法使用上下文,我知道当我传递它时)

所以...

1。从视图中获取Context的正确和错误案例是什么时候? 2。您是否认为有更好的方法可以通过滑行来解决这个问题?

顺便说一下,我不认为用户会看到这次崩溃,可能会在Glide内部处理。

1 个答案:

答案 0 :(得分:0)

据此: https://android.jlelse.eu/using-glide-few-tips-to-be-a-pro-60f41e29d30a 建议使用当前活动上下文进行滑动,然后 view.getContext()返回活动的上下文(可能在大多数情况下)。因此,只需轻松地将其用于滑行