每个人。我有一个包含 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 上下文类放在静态字段中;这是内存泄漏”。这是虚惊一场还是我永远不应该这样做?