我的背景是什么,在哪里可以找到?

时间:2019-06-01 18:38:25

标签: java android universal-image-loader

我早些时候问过类似的问题,但我不知道该怎么办,我还阅读了其他解决方案,例如:What is a NullPointerException, and how do I fix it? 我仍然不知道该怎么办,请帮忙:

据我了解,我的context = null;和我不确定为什么以及如何解决...

我编写了一个UniversImageLoader.class以便能够通过多个活动加载图像。现在,我已经在所有活动中启动了它,但是在我的UIL类中,我需要传递一个上下文。

public class UniversalImageLoader {

    private static final int defaultImage = R.drawable.ic_android;
    private Context mContext;

    public UniversalImageLoader(Context context) {
        mContext = context;
    }

    public ImageLoaderConfiguration getConfig(){
        //File cacheDir = StorageUtils.getCacheDirectory(mContext);
        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(mContext)//<--the error is in this line
                .memoryCacheExtraOptions(480, 800) // default = device screen dimensions
                .diskCacheExtraOptions(480, 800, null)
                .threadPriority(Thread.NORM_PRIORITY - 2) // default
                .tasksProcessingOrder(QueueProcessingType.FIFO) // default
                .denyCacheImageMultipleSizesInMemory()
                .memoryCache(new LruMemoryCache(2 * 1024 * 1024))
                .memoryCacheSize(2 * 1024 * 1024)
                .memoryCacheSizePercentage(13) // default
                .diskCacheSize(50 * 1024 * 1024)
                .diskCacheFileCount(100)
                .diskCacheFileNameGenerator(new HashCodeFileNameGenerator()) // default
                .imageDownloader(new BaseImageDownloader(mContext)) // default
                .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
                .writeDebugLogs()
                .build();

        return config;
    }

在HomeActivity中:[在我这样称呼的每个Activity中]

private void initImageLoader(){
        UniversalImageLoader universalImageLoader = new UniversalImageLoader(mContext);
        ImageLoader.getInstance().init(universalImageLoader.getConfig());
    }

在所有这些活动中,我都在OnCreate方法中将其称为:

initImageLoader();

因此,我已阅读并查看了其他解决方案,但找不到可理解的答案...您的指导将不胜感激!

2 个答案:

答案 0 :(得分:0)

简单来说,上下文基本上是应用程序/活动的句柄,然后可以用于访问特定于应用程序的资源和类,以及对诸如启动活动,广播之类的应用程序级操作的调用和接收意图等。

您可以通过调用getApplicationContext()getContext()requireContext()getBaseContext()this来获得上下文(在从{{1 }},例如ContextApplicationActivityService类。

这里有一个Mindorks article,可以帮助您了解有关上下文,使用方式和使用时间的基本知识。

答案 1 :(得分:0)

在构造函数中使用this.mContext = context;,以便将您的上下文传递给当前类的上下文。

在使用此类的地方传递getApplicationContextyourActivityName.this

如果要分段使用它,请使用getActivitygetContext