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"
添加回答
举报