2017-10-08 73 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

我明白,如果您需要編寫將圖像加載到視圖中的方法,您是否會傳遞上下文或從視圖中獲取圖像? –