0

每个人。我有一个包含 1 个活动和 4 个片段的应用程序(我正在使用底部导航)和一个 ImageDownloaderPicasso 类:

public static final String USER_CREDENTIALS = "******:*******";
public static final String BASIC_AUTH = "Basic " + new String(Base64.encode(USER_CREDENTIALS.getBytes(), Base64.NO_WRAP));
public static Context context;
private static final OkHttpClient client = new OkHttpClient.Builder().addInterceptor(chain -> {
            Request newRequest = chain.request().newBuilder()
                    .addHeader("Authorization", BASIC_AUTH)
                    .build();
            return chain.proceed(newRequest);
        })
        .build();


public static void loadImage(String url, ProgressBar progressBar, ImageView imageView){
    Picasso picasso = new Picasso.Builder(context)
            .downloader(new OkHttp3Downloader(client))
            .build();

    picasso.load(url)
            .placeholder(R.drawable.perfil)
            .error(R.drawable.perfil)
            .into(imageView, new Callback() {
                @Override
                public void onSuccess() {
                    if (progressBar != null) progressBar.setVisibility(View.GONE);
                }

                @Override
                public void onError(Exception e) {
                    if (progressBar != null) progressBar.setVisibility(View.GONE);
                }
            });
}

我在所有片段上都使用了 loadImage() 方法,因此我创建了一个静态上下文字段并在 MainActivity 的 onCreate() 方法中分配了上下文。我收到警告:“不要将 Android 上下文类放在静态字段中;这是内存泄漏”。这是虚惊一场还是我永远不应该这样做?

4

0 回答 0