Skip to content

Commit 02ef490

Browse files
author
jordanqin
committed
update qcloud sdk to 1.5.65
1 parent d92c4bd commit 02ef490

File tree

4 files changed

+45
-18
lines changed

4 files changed

+45
-18
lines changed

QCloudFoundation/foundation/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ android {
77
minSdkVersion 15
88
targetSdkVersion 28
99

10-
versionCode 10564
11-
versionName "1.5.64"
10+
versionCode 10565
11+
versionName "1.5.65"
1212

1313
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
1414

QCloudFoundation/foundation/src/main/java/com/tencent/qcloud/core/http/QCloudHttpClient.java

Lines changed: 35 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ public final class QCloudHttpClient {
5757
// private NetworkClient networkClient;
5858
private String networkClientType = OkHttpClientImpl.class.getName();
5959
private static Map<Integer, NetworkClient> networkClientMap = new ConcurrentHashMap<>(2);
60+
private static OkHttpClient.Builder okHttpClientBuilder;
61+
private OkHttpClientImpl okhttpNetworkClient;
6062
private final TaskManager taskManager;
6163
private final HttpLogger httpLogger;
6264

@@ -214,10 +216,17 @@ private QCloudHttpClient(Builder b) {
214216
networkClient = new OkHttpClientImpl();
215217
}
216218
networkClientType = networkClient.getClass().getName();
217-
int hashCode = networkClientType.hashCode();
218-
if(!networkClientMap.containsKey(hashCode)){
219-
networkClient.init(b, hostnameVerifier(), mDns, httpLogger);
220-
networkClientMap.put(hashCode, networkClient);
219+
if(OkHttpClientImpl.class.getName().equals(networkClientType) && networkClient instanceof OkHttpClientImpl){
220+
// 如果是默认的okhttp 则不缓存 支持外部各service不同配置
221+
this.okhttpNetworkClient = (OkHttpClientImpl) networkClient;
222+
this.okhttpNetworkClient.init(b, hostnameVerifier(), mDns, httpLogger);
223+
} else {
224+
// 如果不是okhttp,例如quic,由于资源消耗问题,进行缓存,不支持外部各service不同配置
225+
int hashCode = networkClientType.hashCode();
226+
if(!networkClientMap.containsKey(hashCode)){
227+
networkClient.init(b, hostnameVerifier(), mDns, httpLogger);
228+
networkClientMap.put(hashCode, networkClient);
229+
}
221230
}
222231
connectionRepository.addPrefetchHosts(b.prefetchHost);
223232
connectionRepository.init(); // 启动 dns 缓存
@@ -226,13 +235,19 @@ private QCloudHttpClient(Builder b) {
226235
public void setNetworkClientType(Builder b){
227236
NetworkClient networkClient = b.networkClient;
228237
if(networkClient != null){
229-
String name = networkClient.getClass().getName();
230-
int hashCode = name.hashCode();
231-
if(!networkClientMap.containsKey(hashCode)){
232-
networkClient.init(b, hostnameVerifier(), mDns, httpLogger);
233-
networkClientMap.put(hashCode, networkClient);
238+
networkClientType = networkClient.getClass().getName();
239+
if(OkHttpClientImpl.class.getName().equals(networkClientType) && networkClient instanceof OkHttpClientImpl){
240+
// 如果是默认的okhttp 则不缓存 支持外部各service不同配置
241+
this.okhttpNetworkClient = (OkHttpClientImpl) networkClient;
242+
this.okhttpNetworkClient.init(b, hostnameVerifier(), mDns, httpLogger);
243+
} else {
244+
// 如果不是okhttp,例如quic,由于资源消耗问题,进行缓存,不支持外部各service不同配置
245+
int hashCode = networkClientType.hashCode();
246+
if(!networkClientMap.containsKey(hashCode)){
247+
networkClient.init(b, hostnameVerifier(), mDns, httpLogger);
248+
networkClientMap.put(hashCode, networkClient);
249+
}
234250
}
235-
this.networkClientType = name;
236251
}
237252
}
238253

@@ -268,7 +283,11 @@ private HostnameVerifier hostnameVerifier() {
268283

269284
private <T> HttpTask<T> handleRequest(HttpRequest<T> request,
270285
QCloudCredentialProvider credentialProvider) {
271-
return new HttpTask<T>(request, credentialProvider, networkClientMap.get(networkClientType.hashCode()));
286+
if(OkHttpClientImpl.class.getName().equals(networkClientType)){
287+
return new HttpTask<T>(request, credentialProvider, this.okhttpNetworkClient);
288+
} else {
289+
return new HttpTask<T>(request, credentialProvider, networkClientMap.get(networkClientType.hashCode()));
290+
}
272291
}
273292

274293
/**
@@ -357,7 +376,11 @@ public QCloudHttpClient build() {
357376
retryStrategy.setRetryHandler(qCloudHttpRetryHandler);
358377
}
359378
if (mBuilder == null) {
360-
mBuilder = new OkHttpClient.Builder();
379+
// 复用okhttp底层资源(线程池、连接池等)
380+
if(QCloudHttpClient.okHttpClientBuilder == null){
381+
QCloudHttpClient.okHttpClientBuilder = new OkHttpClient.Builder();
382+
}
383+
mBuilder = QCloudHttpClient.okHttpClientBuilder;
361384
}
362385

363386
return new QCloudHttpClient(this);

QCloudFoundation/quic/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ android {
2929
targetSdkVersion 27
3030

3131
// versionCode 6位 versionName最后一段为3位时代表不上Maven的私有版本(目前9结尾用来兼容armeabi)
32-
versionCode 10543
33-
versionName "1.5.43"
32+
versionCode 10544
33+
versionName "1.5.44"
3434

3535
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
3636
consumerProguardFiles 'proguard-rules.pro'

QCloudFoundation/quic/src/main/java/com/tencent/qcloud/quic/QuicImpl.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -401,14 +401,18 @@ private void finish(){
401401
* 取消链接
402402
*/
403403
public void cancelConnect(){
404-
realQuicCall.CancelRequest();
404+
if (realQuicCall != null) {
405+
realQuicCall.CancelRequest();
406+
}
405407
}
406408

407409
/**
408410
* 清除资源
409411
*/
410412
public void clear(){
411-
realQuicCall.Destroy();
413+
if (realQuicCall != null) {
414+
realQuicCall.Destroy();
415+
}
412416
}
413417

414418
@Override

0 commit comments

Comments
 (0)