1 回答

TA貢獻1719條經驗 獲得超6個贊
當您創建 UniversalImageLoader 類的對象時,傳遞getApplicationContext()而不是活動上下文。
應用程序上下文在整個應用程序中可用,而活動上下文則綁定到活動生命周期。
更新:
Application Context:它是一個單例實例,可以通過 getApplicationContext() 在活動中訪問。此上下文與應用程序的生命周期相關聯。應用程序上下文可用于您需要其生命周期與當前上下文分離的上下文,或者當您傳遞超出活動范圍的上下文時
private void initImageLoader(){
UniversalImageLoader universalImageLoader = new UniversalImageLoader(getApplicationContext());
ImageLoader.getInstance().init(universalImageLoader.getConfig());
}
活動上下文此上下文在活動中可用。此上下文與活動的生命周期相關聯。
在這里閱讀更多關于 Activity context 和 application context 的區別。 https://blog.mindorks.com/understanding-context-in-android-application-330913e32514
對于多個活動,您可以在 Application 類的 onCreate 方法中進行初始化。
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// Initialize the Universal Image Loader here
DisplayImageOptions defaultOptions = new
DisplayImageOptions.Builder()
.cacheOnDisk(true).cacheInMemory(true).build();
ImageLoaderConfiguration config = new
ImageLoaderConfiguration.Builder(getApplicationContext())
.defaultDisplayImageOptions(defaultOptions).build();
ImageLoader.getInstance().init(config);
}
然后在您的 Activity 中像這樣獲取圖像加載器實例。
ImageLoader mImageLoader = ImageLoader.getInstance();
您還需要像這樣在 AndroidManifest 中添加您的應用程序類。
<application
android:name=".MyApplication"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
添加回答
舉報