2017-10-08 120 views
0

我现在面临的问题与滑翔为什么使用View.getContext()不太流行?

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 - `应用上下文”,这不是好主意人l对于很多原因

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内部处理。

+2

如果你正面临这个问题的链接,由于活动的getContext然后从任何杀戮也不会工作 –

+0

你会建议? –

回答

0

这不是正如你在你的问题中所建议的那样受欢迎。下面是关于不同的上下文

View.getContext()的详细情况:返回查看当前运行的背景下 通常情况下,当前活跃的活动。

Activity.getApplicationContext():返回整个应用程序的上下文(进程中所有的活动都在里面运行)。如果您需要一个与整个应用程序的生命周期相关的上下文,而不仅仅是当前的活动,则使用它而不是当前的活动上下文。

ContextWrapper.getBaseContext():如果您需要从另一个上下文中访问上下文,则使用ContextWrapper。从ContextWrapper引用的Context是通过getBaseContext()来访问的。

下面是一个可以帮助你在得到一些更多的信息

http://androidforbeginners.blogspot.com/2009/12/context.html 
+0

我明白,如果您需要编写将图像加载到视图中的方法,您是否会传递上下文或从视图中获取图像? –