这是因为在API 17上,Picasso默认使用的是OkHttp 2.x版本。而在2.x版本中,可能会存在HTTP 504网关超时错误。解决方法是将Picasso指定使用OkHttp 3.x版本,或者使用其他HTTP客户端库。
示例代码如下:
在build.gradle中添加以下代码:
dependencies {
implementation 'com.squareup.picasso:picasso:2.71828'
implementation 'com.squareup.okhttp3:okhttp:3.14.7'
implementation 'com.squareup.okhttp3:okhttp-urlconnection:3.14.7'
}
然后在代码中使用如下代码初始化Picasso:
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(60, TimeUnit.SECONDS)
.readTimeout(60, TimeUnit.SECONDS)
.writeTimeout(60, TimeUnit.SECONDS)
.build();
Picasso picasso = new Picasso.Builder(context)
.downloader(new OkHttp3Downloader(client))
.build();
如果不想使用OkHttp 3.x版本,可以使用其他HTTP客户端库,如HttpUrlConnection,Volley等。具体方法可以参考它们的官方文档。
注意:在使用Picasso加载图片时,最好将其初始化放在Application中,并且只初始化一次,避免重复创建对象。