Skip to content
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
#Changelog
## 8.5.2(2022-11-24)
* 支持 multi 区域
* 优化 Server 配置拉去逻辑

## 8.5.1(2022-10-21)
* 移除雾存储区域:华东一区
* 新增首尔和华东浙江 2 区 Region
Expand Down
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ https://github.com/qiniudemo/qiniu-lab-android

| Qiniu SDK 版本 | 最低 Android版本 | 依赖库版本 |
|------------ |-----------------|------------------------|
| 8.5.2 | Android 4.0+ | okhttp 4+ |
| 8.5.1 | Android 4.0+ | okhttp 4+ |
| 8.5.0 | Android 4.0+ | okhttp 4+ |
| 8.4.* | Android 4.0+ | okhttp 4+ |
Expand All @@ -35,7 +36,7 @@ https://github.com/qiniudemo/qiniu-lab-android
| 7.0.7 | Android 2.2+ | android-async-http 1.4.8 |

### 注意
* 推荐使用最新版:8.5.1
* 推荐使用最新版:8.5.2
* 7.6.2 ~ 8.3.2 AndroidNetwork.getMobileDbm()可以获取手机信号强度,需要如下权限(API>=18时生效)
```
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
Expand Down
2 changes: 1 addition & 1 deletion library/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ dependencies {
implementation 'com.squareup.okhttp3:okhttp:4.9.1'

// implementation 'com.squareup.okhttp3:okhttp:3.12.+'
implementation 'com.qiniu:happy-dns:2.0.0'
implementation 'com.qiniu:happy-dns:2.0.1'
// for javax.annotation.Nullable use in custom MultipartBody and Headers implements.
// implementation 'com.google.code.findbugs:jsr305:3.0.2'
implementation 'org.conscrypt:conscrypt-android:2.2.1'
Expand Down
17 changes: 8 additions & 9 deletions library/src/androidTest/java/com/qiniu/android/TestConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,27 +10,26 @@ public final class TestConfig {
// TODO: 2020-05-09 bad token for testPutBytesWithFixedZoneUseBackupDomains
// 华东上传凭证
public static final String bucket_z0 = "kodo-phone-zone0-space";

public static final String token_z0 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:Qxeb7v5PXIrih_gwR-6pD1KsGgg=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZTAtc3BhY2UiLCJkZWFkbGluZSI6MTY2OTUzNDk3OCwgInJldHVybkJvZHkiOiJ7XCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpfSJ9";
public static final String token_z0 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:gk-emjEYF779GyuD2PLjrJGNeWw=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZTAtc3BhY2UiLCJkZWFkbGluZSI6MTY3NDgwMTE1NSwgInJldHVybkJvZHkiOiJ7XCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpfSJ9";
// 华北上传凭证
public static final String bucket_z1 = "kodo-phone-zone1-space";
public static final String token_z1 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:crF2Xi7Zxcs6y9OIwmbZ_9QdAtA=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZTEtc3BhY2UiLCJkZWFkbGluZSI6MTY2OTUzNDk3OCwgInJldHVybkJvZHkiOiJ7XCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpfSJ9";
public static final String token_z1 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:Vo4gv4uabU3RKpH0R-PxhU6tj6c=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZTEtc3BhY2UiLCJkZWFkbGluZSI6MTY3NDgwMTE1NSwgInJldHVybkJvZHkiOiJ7XCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpfSJ9";
// 华南上传凭证
public static final String bucket_z2 = "kodo-phone-zone2-space";
public static final String token_z2 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:leoDnGLMa0wfqQ4GGb3yqWjLw5Y=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZTItc3BhY2UiLCJkZWFkbGluZSI6MTY2OTUzNDk3OCwgInJldHVybkJvZHkiOiJ7XCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpfSJ9";
public static final String token_z2 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:juVQn2wvtbrFEy-J2Etq-JqO6UE=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZTItc3BhY2UiLCJkZWFkbGluZSI6MTY3NDgwMTE1NSwgInJldHVybkJvZHkiOiJ7XCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpfSJ9";
// 北美上传凭证
public static final String bucket_na0 = "kodo-phone-zone-na0-space";
public static final String token_na0 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:4WqbwsnKFgWO6vZMr8V6tVMNZ50=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZS1uYTAtc3BhY2UiLCJkZWFkbGluZSI6MTY2OTUzNDk3OCwgInJldHVybkJvZHkiOiJ7XCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpfSJ9";
public static final String token_na0 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:PDQxd9wAWd7_jV8UMR9dxnVtAac=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZS1uYTAtc3BhY2UiLCJkZWFkbGluZSI6MTY3NDgwMTE1NSwgInJldHVybkJvZHkiOiJ7XCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpfSJ9";
// 东南亚上传凭证
public static final String bucket_as0 = "kodo-phone-zone-as0-space";
public static final String token_as0 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:YjOnS0SLd0P1Z5VG_3Oxfls0KeA=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZS1hczAtc3BhY2UiLCJkZWFkbGluZSI6MTY2OTUzNDk3OCwgInJldHVybkJvZHkiOiJ7XCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpfSJ9";
public static final String token_as0 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:Aj9HN9lRqpQzyX3EVno7BjMBkv8=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZS1hczAtc3BhY2UiLCJkZWFkbGluZSI6MTY3NDgwMTE1NSwgInJldHVybkJvZHkiOiJ7XCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpfSJ9";
// 华北浙江2上传凭证
public static final String bucket_cn_east_2 = "kodo-phone-cn-east-2";
public static final String token_cn_east_2 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:ogrnSltO4Vdsrcsk4XNCR9t63tQ=:eyJzY29wZSI6ImtvZG8tcGhvbmUtY24tZWFzdC0yIiwiZGVhZGxpbmUiOjE2Njk1MzQ5NzgsICJyZXR1cm5Cb2R5Ijoie1wiZm9vXCI6JCh4OmZvbyksIFwiYmFyXCI6JCh4OmJhciksIFwibWltZVR5cGVcIjokKG1pbWVUeXBlKSwgXCJoYXNoXCI6JChldGFnKSwgXCJrZXlcIjokKGtleSksIFwiZm5hbWVcIjokKGZuYW1lKX0ifQ==";
public static final String token_cn_east_2 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:PDr1-LvnJ53Are_ZhhDVF4HwOPY=:eyJzY29wZSI6ImtvZG8tcGhvbmUtY24tZWFzdC0yIiwiZGVhZGxpbmUiOjE2NzQ4MDExNTUsICJyZXR1cm5Cb2R5Ijoie1wiZm9vXCI6JCh4OmZvbyksIFwiYmFyXCI6JCh4OmJhciksIFwibWltZVR5cGVcIjokKG1pbWVUeXBlKSwgXCJoYXNoXCI6JChldGFnKSwgXCJrZXlcIjokKGtleSksIFwiZm5hbWVcIjokKGZuYW1lKX0ifQ==";
// 韩国亚太上传凭证
public static final String bucket_ap_northeast_1 = "kodo-phone-ap-northeast-1";
public static final String token_ap_northeast_1 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:yI8KG27WvY9QSLv669-yv9Ac1mY=:eyJzY29wZSI6ImtvZG8tcGhvbmUtYXAtbm9ydGhlYXN0LTEiLCJkZWFkbGluZSI6MTY2OTUzNDk3OCwgInJldHVybkJvZHkiOiJ7XCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpfSJ9";
public static final String invalidBucketToken = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:KVBTuAcbmqx0ji81VQRwPzLgUEY=:eyJzY29wZSI6InpvbmVfaW52YWxpZCIsImRlYWRsaW5lIjoxNjY5NTM0OTc4LCAicmV0dXJuQm9keSI6IntcImZvb1wiOiQoeDpmb28pLCBcImJhclwiOiQoeDpiYXIpLCBcIm1pbWVUeXBlXCI6JChtaW1lVHlwZSksIFwiaGFzaFwiOiQoZXRhZyksIFwia2V5XCI6JChrZXkpLCBcImZuYW1lXCI6JChmbmFtZSl9In0=";
public static final String token_ap_northeast_1 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:StRMMkmKvNZMCo6zTrUjaLO529E=:eyJzY29wZSI6ImtvZG8tcGhvbmUtYXAtbm9ydGhlYXN0LTEiLCJkZWFkbGluZSI6MTY3NDgwMTE1NSwgInJldHVybkJvZHkiOiJ7XCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpfSJ9";
public static final String invalidBucketToken = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:mJ6Z0JLK5op1_d0FdU0JrjIHKog=:eyJzY29wZSI6InpvbmVfaW52YWxpZCIsImRlYWRsaW5lIjoxNjc0ODAxMTU1LCAicmV0dXJuQm9keSI6IntcImZvb1wiOiQoeDpmb28pLCBcImJhclwiOiQoeDpiYXIpLCBcIm1pbWVUeXBlXCI6JChtaW1lVHlwZSksIFwiaGFzaFwiOiQoZXRhZyksIFwia2V5XCI6JChrZXkpLCBcImZuYW1lXCI6JChmbmFtZSl9In0=";

// -----------
public static final String ak = "bjtWBQXrcxgo7HWwlC_bgHg81j352_GhgBGZPeOW";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ public void setReport(Object value, String key){
if (key == null || value == null){
return;
}
if (value instanceof String && ((String) value).length() > 1024) {
value = ((String) value).substring(0, 1024);
}
keyValues.put(key, value);
}

Expand Down
33 changes: 22 additions & 11 deletions library/src/main/java/com/qiniu/android/common/AutoZone.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
Expand All @@ -23,6 +24,7 @@ public final class AutoZone extends Zone {
*/
private String[] ucServers;
private ArrayList<RequestTransaction> transactions = new ArrayList<>();
private FixedZone defaultZone;

private static final SingleFlight SingleFlight = new SingleFlight();

Expand All @@ -39,17 +41,17 @@ public void setUcServers(String[] ucServers) {
}
}

public void setDefaultZones(FixedZone[] zones) {
defaultZone = FixedZone.combineZones(zones);
}

public List<String> getUcServerList() {
if (ucServers != null && ucServers.length > 0) {
ArrayList<String> serverList = new ArrayList<>();
Collections.addAll(serverList, ucServers);
return serverList;
} else {
ArrayList<String> serverList = new ArrayList<>();
serverList.add(Config.preQueryHost02);
serverList.add(Config.preQueryHost00);
serverList.add(Config.preQueryHost01);
return serverList;
return Arrays.asList(Config.preQueryHosts());
}
}

Expand All @@ -61,7 +63,7 @@ private String[] getUcServerArray() {
if (ucServers != null && ucServers.length > 0) {
return ucServers;
} else {
return new String[]{Config.preQueryHost00, Config.preQueryHost01};
return Config.preQueryHosts();
}
}

Expand All @@ -70,7 +72,8 @@ public ZonesInfo getZonesInfo(UpToken token) {
if (token == null) {
return null;
}
ZonesInfo zonesInfo = GlobalCache.getInstance().zonesInfoForKey(token.index());
final String cacheKey = token.index();
ZonesInfo zonesInfo = GlobalCache.getInstance().zonesInfoForKey(cacheKey);
if (zonesInfo != null) {
try {
zonesInfo = (ZonesInfo) zonesInfo.clone();
Expand Down Expand Up @@ -137,12 +140,20 @@ public void complete(Object value) {
completeHandler.complete(ResponseInfo.ParseError, responseInfo, requestMetrics);
}
} else {
if (responseInfo.isNetworkBroken()) {
if (responseInfo != null && responseInfo.isNetworkBroken()) {
completeHandler.complete(ResponseInfo.NetworkError, responseInfo, requestMetrics);
} else {
ZonesInfo zonesInfoP = FixedZone.localsZoneInfo().getZonesInfo(token);
if (zonesInfoP.isValid()) {
GlobalCache.getInstance().cache(zonesInfoP, cacheKey);
ZonesInfo info = null;
if (defaultZone != null) {
ZonesInfo infoP = defaultZone.getZonesInfo(token);
if (infoP != null && infoP.isValid()) {
infoP.toTemporary();
info = infoP;
}
}

if (info != null) {
GlobalCache.getInstance().cache(info, cacheKey);
completeHandler.complete(0, responseInfo, requestMetrics);
} else {
completeHandler.complete(ResponseInfo.ParseError, responseInfo, requestMetrics);
Expand Down
4 changes: 4 additions & 0 deletions library/src/main/java/com/qiniu/android/common/Config.java
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,10 @@ public final class Config {
public static String preQueryHost01 = "api.qiniu.com";
public static String preQueryHost02 = "kodo-config.qiniuapi.com";

public static String[] preQueryHosts() {
return new String[]{preQueryHost00, preQueryHost02, preQueryHost01};
}

/**
* 当网络切换到 wifi 下,切换到此设置
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@


public final class Constants {
public static final String VERSION = "8.5.1";
public static final String VERSION = "8.5.2";

public static final String UTF_8 = "utf-8";
}
36 changes: 23 additions & 13 deletions library/src/main/java/com/qiniu/android/common/FixedZone.java
Original file line number Diff line number Diff line change
Expand Up @@ -64,18 +64,28 @@ public final class FixedZone extends Zone {
private ZonesInfo zonesInfo;

public static FixedZone localsZoneInfo() {
ArrayList<FixedZone> localsZone = new ArrayList<>();
localsZone.add((FixedZone)zone0);
localsZone.add((FixedZone)zoneCnEast2);
localsZone.add((FixedZone)zone1);
localsZone.add((FixedZone)zone2);
localsZone.add((FixedZone)zoneNa0);
localsZone.add((FixedZone)zoneApNorthEast1);
localsZone.add((FixedZone)zoneAs0);
FixedZone[] localsZone = new FixedZone[]{
(FixedZone) zone0, (FixedZone) zoneCnEast2,
(FixedZone) zone1, (FixedZone) zone2,
(FixedZone) zoneNa0, (FixedZone) zoneApNorthEast1,
(FixedZone) zoneAs0,
};

FixedZone zone = combineZones(localsZone);
if (zone != null) {
zone.zonesInfo.toTemporary();
}
return zone;
}

public static FixedZone combineZones(FixedZone[] zones) {
if (zones == null || zones.length == 0) {
return null;
}

ArrayList<ZoneInfo> zoneInfoArray = new ArrayList<>();
for (FixedZone zone : localsZone){
if (zone.zonesInfo != null && zone.zonesInfo.zonesInfo != null){
for (FixedZone zone : zones) {
if (zone.zonesInfo != null && zone.zonesInfo.zonesInfo != null) {
zoneInfoArray.addAll(zone.zonesInfo.zonesInfo);
}
}
Expand All @@ -90,7 +100,7 @@ public FixedZone(ZoneInfo zoneInfo) {
this.zonesInfo = new ZonesInfo(zoneInfoList);
}

public FixedZone(ZonesInfo zonesInfo){
public FixedZone(ZonesInfo zonesInfo) {
this.zonesInfo = zonesInfo;
}

Expand All @@ -116,7 +126,7 @@ private ZonesInfo createZonesInfo(String[] upDomains,

List<String> upDomainsList = new ArrayList<String>(Arrays.asList(upDomains));
List<String> oldUpDomainsList = null;
if (oldUpDomains != null && oldUpDomains.length > 0){
if (oldUpDomains != null && oldUpDomains.length > 0) {
oldUpDomainsList = new ArrayList<String>(Arrays.asList(oldUpDomains));
} else {
oldUpDomainsList = new ArrayList<>();
Expand All @@ -139,7 +149,7 @@ public ZonesInfo getZonesInfo(UpToken token) {

@Override
public void preQuery(UpToken token, QueryHandler completeHandler) {
if (completeHandler != null){
if (completeHandler != null) {
completeHandler.complete(0, null, null);
}
}
Expand Down
23 changes: 18 additions & 5 deletions library/src/main/java/com/qiniu/android/common/ZonesInfo.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.Arrays;

public class ZonesInfo implements Cloneable {

Expand All @@ -23,24 +24,36 @@ public ZonesInfo(ArrayList<ZoneInfo> zonesInfo, boolean isTemporary) {

public static ZonesInfo createZonesInfo(JSONObject jsonObject) {
ArrayList<ZoneInfo> zonesInfo = new ArrayList<>();
try {
if (jsonObject != null) {
if (jsonObject != null) {
try {
JSONArray hosts = jsonObject.getJSONArray("hosts");
for (int i = 0; i < hosts.length(); i++) {
ZoneInfo zoneInfo = ZoneInfo.buildFromJson(hosts.getJSONObject(i));
if (zoneInfo != null && zoneInfo.isValid()) {
zonesInfo.add(zoneInfo);
}
}

} catch (Exception ignored) {
}
} catch (Exception ignored) {
}

return new ZonesInfo(zonesInfo);
}

public boolean isValid() {
return zonesInfo != null && zonesInfo.size() > 0 && zonesInfo.get(0).isValid();
if (zonesInfo == null || zonesInfo.size() == 0) {
return false;
}

boolean valid = true;
for (ZoneInfo info : zonesInfo) {
if (!info.isValid()) {
valid = false;
break;
}
}
return valid;
}

// 是否为临时 zone, 临时 zone,不建议长期使用
Expand All @@ -57,7 +70,7 @@ protected Object clone() throws CloneNotSupportedException {
ArrayList<ZoneInfo> infos = new ArrayList<>();
if (zonesInfo != null && zonesInfo.size() > 0) {
for (ZoneInfo zoneInfo : zonesInfo) {
infos.add((ZoneInfo)zoneInfo.clone());
infos.add((ZoneInfo) zoneInfo.clone());
}
}
ZonesInfo info = new ZonesInfo(infos);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.qiniu.android.http.dns;

import com.qiniu.android.common.Config;
import com.qiniu.android.common.FixedZone;
import com.qiniu.android.common.Zone;
import com.qiniu.android.common.ZoneInfo;
import com.qiniu.android.common.ZonesInfo;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.qiniu.android.transaction.TransactionManager;

import java.util.List;
import java.util.Random;

public class ServerConfigMonitor {
private static final String TransactionKey = "ServerConfig";
Expand Down Expand Up @@ -42,7 +43,9 @@ public synchronized static void startMonitor() {
return;
}

TransactionManager.Transaction transaction = new TransactionManager.Transaction(TransactionKey, 0, 10, new Runnable() {
Random random = new Random();
int interval = 120 + random.nextInt(240);
TransactionManager.Transaction transaction = new TransactionManager.Transaction(TransactionKey, 0, interval, new Runnable() {
@Override
public void run() {
configMonitor.monitor();
Expand Down
Loading