diff --git a/.idea/misc.xml b/.idea/misc.xml
index 1b7916988..ab998683f 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,7 +1,8 @@
-
+
+
\ No newline at end of file
diff --git a/library/src/androidTest/java/com/qiniu/android/AsynTest.java b/library/src/androidTest/java/com/qiniu/android/AsynTest.java
index c7330fb34..0c0dfd2b4 100644
--- a/library/src/androidTest/java/com/qiniu/android/AsynTest.java
+++ b/library/src/androidTest/java/com/qiniu/android/AsynTest.java
@@ -70,7 +70,7 @@ public void run() {
@Override
public void run() {
- if (Thread.currentThread().getName().equals("main")){
+ if (Thread.currentThread() == Looper.getMainLooper().getThread()){
testParam.successCount += 1;
}
@@ -112,7 +112,7 @@ public void testAsyncBg(){
@Override
public void run() {
String threadName = Thread.currentThread().getName();
- if (!threadName.equals("main")){
+ if (Thread.currentThread() != Looper.getMainLooper().getThread()){
synchronized (this){
testParam.successCount += 1;
}
diff --git a/library/src/androidTest/java/com/qiniu/android/DnsCacheFileTest.java b/library/src/androidTest/java/com/qiniu/android/DnsCacheFileTest.java
index 0cdaba183..2cad26c48 100644
--- a/library/src/androidTest/java/com/qiniu/android/DnsCacheFileTest.java
+++ b/library/src/androidTest/java/com/qiniu/android/DnsCacheFileTest.java
@@ -10,7 +10,7 @@ public class DnsCacheFileTest extends BaseTest {
public void testCreate(){
try {
- DnsCacheFile file = new DnsCacheFile("");
+ DnsCacheFile file = new DnsCacheFile(null);
if (file != null){
assertTrue(false);
}
diff --git a/library/src/main/java/com/qiniu/android/collect/UploadInfoReporter.java b/library/src/main/java/com/qiniu/android/collect/UploadInfoReporter.java
index 7eda01ce5..61cde936e 100644
--- a/library/src/main/java/com/qiniu/android/collect/UploadInfoReporter.java
+++ b/library/src/main/java/com/qiniu/android/collect/UploadInfoReporter.java
@@ -221,10 +221,7 @@ private RequestTransaction createUploadRequestTransaction(String tokenString){
ArrayList hosts = new ArrayList<>();
hosts.add(config.serverURL);
- ArrayList ioHosts = new ArrayList<>();
- ioHosts.add(ZoneInfo.SDKDefaultIOHost);
-
- transaction = new RequestTransaction(hosts, ioHosts, token);
+ transaction = new RequestTransaction(hosts, ZoneInfo.EmptyRegionId, token);
return transaction;
}
diff --git a/library/src/main/java/com/qiniu/android/common/AutoZone.java b/library/src/main/java/com/qiniu/android/common/AutoZone.java
index 24af07319..94aa98477 100644
--- a/library/src/main/java/com/qiniu/android/common/AutoZone.java
+++ b/library/src/main/java/com/qiniu/android/common/AutoZone.java
@@ -85,10 +85,7 @@ public void complete(ResponseInfo responseInfo, UploadRegionRequestMetrics reque
private RequestTransaction createUploadRequestTransaction(UpToken token){
List hosts = getUcServerList();
- ArrayList ioHosts = new ArrayList<>();
- ioHosts.add(ZoneInfo.SDKDefaultIOHost);
-
- RequestTransaction transaction = new RequestTransaction(hosts, ioHosts, token);
+ RequestTransaction transaction = new RequestTransaction(hosts, ZoneInfo.EmptyRegionId, token);
transactions.add(transaction);
return transaction;
}
diff --git a/library/src/main/java/com/qiniu/android/common/FixedZone.java b/library/src/main/java/com/qiniu/android/common/FixedZone.java
index 12ac44e26..4f98a20b1 100644
--- a/library/src/main/java/com/qiniu/android/common/FixedZone.java
+++ b/library/src/main/java/com/qiniu/android/common/FixedZone.java
@@ -4,6 +4,7 @@
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.List;
/**
@@ -16,35 +17,35 @@ public final class FixedZone extends Zone {
*/
public static final Zone zone0 = new FixedZone(new String[]{"upload.qiniup.com", "up.qiniup.com"},
new String[]{"upload.qbox.me", "up.qbox.me"},
- new String[]{"iovip.qbox.me"});
+ "z0");
/**
* 华北机房
*/
public static final Zone zone1 = new FixedZone(new String[]{"upload-z1.qiniup.com", "up-z1.qiniup.com"},
new String[]{"upload-z1.qbox.me", "up-z1.qbox.me"},
- new String[]{"iovip-z1.qbox.me"});
+ "z1");
/**
* 华南机房
*/
public static final Zone zone2 = new FixedZone(new String[]{"upload-z2.qiniup.com", "up-z2.qiniup.com"},
new String[]{"upload-z2.qbox.me", "up-z2.qbox.me"},
- new String[]{"iovip-z2.qbox.me"});
+ "z2");
/**
* 北美机房
*/
public static final Zone zoneNa0 = new FixedZone(new String[]{"upload-na0.qiniup.com", "up-na0.qiniup.com"},
new String[]{"upload-na0.qbox.me", "up-na0.qbox.me"},
- new String[]{"iovip-na0.qbox.me"});
+ "na0");
/**
* 新加坡机房
*/
public static final Zone zoneAs0 = new FixedZone(new String[]{"upload-as0.qiniup.com", "up-as0.qiniup.com"},
new String[]{"upload-as0.qbox.me", "up-as0.qbox.me"},
- new String[]{"iovip-as0.qbox.me"});
+ "as0");
private ZonesInfo zonesInfo;
@@ -81,37 +82,34 @@ public FixedZone(String[] upDomains) {
this(upDomains, null);
}
- public FixedZone(String[] upDomains, String[] ioDomains) {
- this(upDomains, null, ioDomains);
+ public FixedZone(String[] upDomains, String regionId) {
+ this(upDomains, null, regionId);
}
- private FixedZone(String[] upDomains, String[] oldUpDomains, String[] ioDomains) {
- this.zonesInfo = createZonesInfo(upDomains, oldUpDomains, ioDomains);
+ private FixedZone(String[] upDomains, String[] oldUpDomains, String regionId) {
+ this.zonesInfo = createZonesInfo(upDomains, oldUpDomains, regionId);
}
private ZonesInfo createZonesInfo(String[] upDomains,
String[] oldUpDomains,
- String[] ioDomains) {
+ String regionId) {
if (upDomains == null || upDomains.length == 0) {
return null;
}
- ArrayList upDomainsList = new ArrayList(Arrays.asList(upDomains));
- ArrayList oldUpDomainsList = null;
+ List upDomainsList = new ArrayList(Arrays.asList(upDomains));
+ List oldUpDomainsList = null;
if (oldUpDomains != null){
oldUpDomainsList = new ArrayList(Arrays.asList(oldUpDomains));
}
- ArrayList ioDomainsList = null;
- if (ioDomains != null){
- ioDomainsList = new ArrayList(Arrays.asList(ioDomains));
- }
- ZoneInfo zoneInfo = ZoneInfo.buildInfo(upDomainsList, oldUpDomainsList, ioDomainsList);
+ ZoneInfo zoneInfo = ZoneInfo.buildInfo(upDomainsList, oldUpDomainsList, regionId);
if (zoneInfo == null) {
return null;
}
ArrayList zoneInfoList = new ArrayList();
zoneInfoList.add(zoneInfo);
+
return new ZonesInfo(zoneInfoList);
}
diff --git a/library/src/main/java/com/qiniu/android/common/ZoneInfo.java b/library/src/main/java/com/qiniu/android/common/ZoneInfo.java
index c39487a93..dd0d60c95 100644
--- a/library/src/main/java/com/qiniu/android/common/ZoneInfo.java
+++ b/library/src/main/java/com/qiniu/android/common/ZoneInfo.java
@@ -22,49 +22,39 @@ public class ZoneInfo {
private static int DOMAIN_FROZEN_SECONDS = 10 * 60;
- private int ttl;
- public UploadServerGroup acc;
- public UploadServerGroup src;
- public UploadServerGroup old_acc;
- public UploadServerGroup old_src;
-
- public String regionId;
- public ArrayList allHosts;
+ public final int ttl;
+ public final List domains;
+ public final List old_domains;
+
+ public final String regionId;
+ public List allHosts;
public JSONObject detailInfo;
public static ZoneInfo buildInfo(List mainHosts,
- List ioHosts){
- return buildInfo(mainHosts, null, ioHosts);
+ String regionId){
+ return buildInfo(mainHosts, null, regionId);
}
public static ZoneInfo buildInfo(List mainHosts,
List oldHosts,
- List ioHosts){
+ String regionId){
if (mainHosts == null){
return null;
}
HashMap up = new HashMap<>();
-
- HashMap up_acc = new HashMap<>();
- up_acc.put("main", mainHosts);
- up.put("acc", up_acc);
-
+ up.put("domains", mainHosts);
if (oldHosts != null){
- HashMap up_old_acc = new HashMap<>();
- up_old_acc.put("main", oldHosts);
- up.put("old_acc", up_old_acc);
+ up.put("old", oldHosts);
}
- HashMap io_src = new HashMap<>();
- HashMap io = new HashMap<>();
- io_src.put("main", (ioHosts != null ? ioHosts : new ArrayList()));
- io.put("src", io_src);
-
+ if (regionId == null){
+ regionId = EmptyRegionId;
+ }
HashMap info = new HashMap<>();
info.put("ttl", 86400*1000);
+ info.put("region", regionId);
info.put("up", up);
- info.put("io", io);
JSONObject object = new JSONObject(info);
@@ -76,16 +66,13 @@ public static ZoneInfo buildInfo(List mainHosts,
}
private ZoneInfo(int ttl,
- UploadServerGroup acc,
- UploadServerGroup src,
- UploadServerGroup old_acc,
- UploadServerGroup old_src) {
-
+ String regionId,
+ List domains,
+ List old_domains) {
this.ttl = ttl;
- this.acc = acc;
- this.src = src;
- this.old_acc = old_acc;
- this.old_src = old_src;
+ this.regionId = regionId;
+ this.domains = domains;
+ this.old_domains = old_domains;
}
/**
@@ -99,73 +86,49 @@ public static ZoneInfo buildFromJson(JSONObject obj) throws JSONException {
return null;
}
- int ttl = obj.getInt("ttl");
- List domainsList = new ArrayList<>();
- ConcurrentHashMap domainsMap = new ConcurrentHashMap<>();
+ int ttl = obj.optInt("ttl");
+ String regionId = obj.optString("region");
+ if (regionId == null){
+ regionId = EmptyRegionId;
+ }
- String io_host = "null";
- try {
- JSONObject io = obj.getJSONObject("io");
- JSONObject io_src = io.getJSONObject("src");
- JSONArray io_main = io_src.getJSONArray("main");
- io_host = io_main.length() > 0 ? io_main.getString(0) : "null";
- } catch (JSONException e){}
-
- String zoneRegion = "unknown";
- if (io_host.equals("iovip.qbox.me")){
- zoneRegion = "z0";
- } else if (io_host.equals("iovip-z1.qbox.me")){
- zoneRegion = "z1";
- } else if (io_host.equals("iovip-z2.qbox.me")){
- zoneRegion = "z2";
- } else if (io_host.equals("iovip-na0.qbox.me")){
- zoneRegion = "na0";
- } else if (io_host.equals("iovip-as0.qbox.me")){
- zoneRegion = "as0";
- } else if (io_host.equals(SDKDefaultIOHost)){
- zoneRegion = EmptyRegionId;
+ JSONObject up = obj.optJSONObject("up");
+ if (up == null){
+ return null;
}
- JSONObject up = obj.getJSONObject("up");
+ List allHosts = new ArrayList<>();
+ List domains = new ArrayList<>();
+ JSONArray domainsJson = up.optJSONArray("domains");
+ if (domainsJson != null && domainsJson.length() > 0){
+ for (int i=0; i< domainsJson.length(); i++) {
+ String domain = domainsJson.optString(i);
+ if (domain != null && domain.length() > 0){
+ domains.add(domain);
+ allHosts.add(domain);
+ }
+ }
+ }
- JSONObject acc = null;
- JSONObject src = null;
- JSONObject old_acc = null;
- JSONObject old_src = null;
- try {
- acc = up.getJSONObject("acc");;
- } catch (JSONException e) {}
- try {
- src = up.getJSONObject("src");;
- } catch (JSONException e) {}
- try {
- old_acc = up.getJSONObject("old_acc");;
- } catch (JSONException e) {}
- try {
- old_src = up.getJSONObject("old_src");;
- } catch (JSONException e) {}
+ List old_domains = new ArrayList<>();
+ JSONArray old_domainsJson = up.optJSONArray("old");
+ if (old_domainsJson != null && old_domainsJson.length() > 0){
+ for (int i=0; i< old_domainsJson.length(); i++) {
+ String domain = old_domainsJson.optString(i);
+ if (domain != null && domain.length() > 0){
+ old_domains.add(domain);
+ allHosts.add(domain);
+ }
+ }
+ }
- ZoneInfo zoneInfo = new ZoneInfo(ttl,
- UploadServerGroup.buildInfoFromJson(acc),
- UploadServerGroup.buildInfoFromJson(src),
- UploadServerGroup.buildInfoFromJson(old_acc),
- UploadServerGroup.buildInfoFromJson(old_src));
- zoneInfo.regionId = zoneRegion;
+ if (domains.size() == 0 && old_domains.size() == 0){
+ return null;
+ }
+
+ ZoneInfo zoneInfo = new ZoneInfo(ttl, regionId, domains, old_domains);
zoneInfo.detailInfo = obj;
- ArrayList allHosts = new ArrayList<>();
- if (zoneInfo.acc != null && zoneInfo.acc.allHosts != null){
- allHosts.addAll(zoneInfo.acc.allHosts);
- }
- if (zoneInfo.src != null && zoneInfo.src.allHosts != null){
- allHosts.addAll(zoneInfo.src.allHosts);
- }
- if (zoneInfo.old_acc != null && zoneInfo.old_acc.allHosts != null){
- allHosts.addAll(zoneInfo.old_acc.allHosts);
- }
- if (zoneInfo.old_src != null && zoneInfo.old_src.allHosts != null){
- allHosts.addAll(zoneInfo.old_src.allHosts);
- }
zoneInfo.allHosts = allHosts;
return zoneInfo;
diff --git a/library/src/main/java/com/qiniu/android/http/dns/DnsCacheFile.java b/library/src/main/java/com/qiniu/android/http/dns/DnsCacheFile.java
index 667b7e019..fef7c89f5 100644
--- a/library/src/main/java/com/qiniu/android/http/dns/DnsCacheFile.java
+++ b/library/src/main/java/com/qiniu/android/http/dns/DnsCacheFile.java
@@ -16,15 +16,20 @@ public class DnsCacheFile implements Recorder {
public File f;
public DnsCacheFile(String directory) throws IOException {
+ if (directory == null) {
+ throw new IOException("directory invalid");
+ }
+
this.directory = directory;
f = new File(directory);
- if (!f.isDirectory() || !f.exists()) {
+
+ if (!f.exists()) {
boolean r = f.mkdirs();
if (!r) {
throw new IOException("mkdir failed");
}
- return;
}
+
if (!f.isDirectory()) {
throw new IOException("does not mkdir");
}
diff --git a/library/src/main/java/com/qiniu/android/http/dns/DnsCacheInfo.java b/library/src/main/java/com/qiniu/android/http/dns/DnsCacheInfo.java
index 2d4e1baa4..b2433284b 100644
--- a/library/src/main/java/com/qiniu/android/http/dns/DnsCacheInfo.java
+++ b/library/src/main/java/com/qiniu/android/http/dns/DnsCacheInfo.java
@@ -20,12 +20,16 @@ public class DnsCacheInfo implements java.io.Serializable {
public String localIp;
public ConcurrentHashMap> info;
- public static DnsCacheInfo createDnsCacheInfoByJsonData(byte[] jsonData) {
+ public static DnsCacheInfo createDnsCacheInfoByData(byte[] jsonData) {
if (jsonData == null){
return null;
}
- DnsCacheInfo dnsCacheInfo = (DnsCacheInfo)StringUtils.toObject(jsonData);
- return dnsCacheInfo;
+ Object dnsCacheInfo = StringUtils.toObject(jsonData);
+ if (dnsCacheInfo instanceof DnsCacheInfo){
+ return (DnsCacheInfo)dnsCacheInfo;
+ } else {
+ return null;
+ }
}
public DnsCacheInfo() {
diff --git a/library/src/main/java/com/qiniu/android/http/dns/DnsPrefetcher.java b/library/src/main/java/com/qiniu/android/http/dns/DnsPrefetcher.java
index ae138589a..62f929d89 100644
--- a/library/src/main/java/com/qiniu/android/http/dns/DnsPrefetcher.java
+++ b/library/src/main/java/com/qiniu/android/http/dns/DnsPrefetcher.java
@@ -8,22 +8,15 @@
import com.qiniu.android.http.ResponseInfo;
import com.qiniu.android.http.metrics.UploadRegionRequestMetrics;
import com.qiniu.android.storage.GlobalConfiguration;
-import com.qiniu.android.storage.Recorder;
import com.qiniu.android.storage.UpToken;
import com.qiniu.android.utils.AndroidNetwork;
-import com.qiniu.android.utils.StringUtils;
import com.qiniu.android.utils.Utils;
import com.qiniu.android.utils.Wait;
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-
import java.io.IOException;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Iterator;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
@@ -226,7 +219,7 @@ private boolean preFetchHost(String preHost, Dns dns){
private boolean recoverDnsCache(byte[] data){
- DnsCacheInfo dnsCacheInfo = DnsCacheInfo.createDnsCacheInfoByJsonData(data);
+ DnsCacheInfo dnsCacheInfo = DnsCacheInfo.createDnsCacheInfoByData(data);
if (dnsCacheInfo == null || dnsCacheInfo.info == null || dnsCacheInfo.info.size() == 0){
return false;
}
@@ -321,9 +314,11 @@ public void complete(int code, ResponseInfo responseInfo, UploadRegionRequestMet
ZonesInfo autoZonesInfo = currentZone.getZonesInfo(token);
ArrayList autoHosts = new ArrayList<>();
- for (ZoneInfo zoneInfo : autoZonesInfo.zonesInfo) {
- if (zoneInfo != null && zoneInfo.allHosts != null){
- autoHosts.addAll(zoneInfo.allHosts);
+ if (autoZonesInfo != null && autoZonesInfo.zonesInfo != null && autoZonesInfo.zonesInfo.size() > 0) {
+ for (ZoneInfo zoneInfo : autoZonesInfo.zonesInfo) {
+ if (zoneInfo != null && zoneInfo.allHosts != null) {
+ autoHosts.addAll(zoneInfo.allHosts);
+ }
}
}
return autoHosts.toArray(new String[0]);
diff --git a/library/src/main/java/com/qiniu/android/http/request/RequestTransaction.java b/library/src/main/java/com/qiniu/android/http/request/RequestTransaction.java
index 04d0e2515..9a2d72531 100644
--- a/library/src/main/java/com/qiniu/android/http/request/RequestTransaction.java
+++ b/library/src/main/java/com/qiniu/android/http/request/RequestTransaction.java
@@ -43,20 +43,20 @@ public RequestTransaction(List hosts,
}
public RequestTransaction(List hosts,
- List ioHosts,
+ String regionId,
UpToken token){
- this(new Configuration.Builder().build(), UploadOptions.defaultOptions(), hosts, ioHosts, null, token);
+ this(new Configuration.Builder().build(), UploadOptions.defaultOptions(), hosts, regionId, null, token);
}
public RequestTransaction(Configuration config,
UploadOptions uploadOption,
List hosts,
- List ioHosts,
+ String regionId,
String key,
UpToken token){
this(config, uploadOption, key, token);
IUploadRegion region = new UploadDomainRegion();
- region.setupRegionData(ZoneInfo.buildInfo(hosts, ioHosts));
+ region.setupRegionData(ZoneInfo.buildInfo(hosts, regionId));
this.initData(region, region);
}
@@ -106,7 +106,7 @@ public boolean shouldRetry(ResponseInfo responseInfo, JSONObject response) {
HashMap header = new HashMap<>();
header.put("User-Agent", userAgent);
- String action = "/v3/query?ak=" + (token.accessKey != null ? token.accessKey : "") + "&bucket=" + (token.bucket != null ? token.bucket : "") ;
+ String action = "/v4/query?ak=" + (token.accessKey != null ? token.accessKey : "") + "&bucket=" + (token.bucket != null ? token.bucket : "") ;
regionRequest.get(action, isAsync, header, shouldRetryHandler, new HttpRegionRequest.RequestCompleteHandler() {
@Override
public void complete(ResponseInfo responseInfo, UploadRegionRequestMetrics requestMetrics, JSONObject response) {
diff --git a/library/src/main/java/com/qiniu/android/http/serverRegion/UploadDomainRegion.java b/library/src/main/java/com/qiniu/android/http/serverRegion/UploadDomainRegion.java
index 12489e079..09b787fb1 100644
--- a/library/src/main/java/com/qiniu/android/http/serverRegion/UploadDomainRegion.java
+++ b/library/src/main/java/com/qiniu/android/http/serverRegion/UploadDomainRegion.java
@@ -41,38 +41,18 @@ public void setupRegionData(ZoneInfo zoneInfo) {
isAllFrozen = false;
ArrayList domainHostList = new ArrayList<>();
- ArrayList serverGroups = new ArrayList<>();
- if (zoneInfo.acc != null){
- serverGroups.add(zoneInfo.acc);
- if (zoneInfo.acc.allHosts != null){
- domainHostList.addAll(zoneInfo.acc.allHosts);
- }
- }
- if (zoneInfo.src != null){
- serverGroups.add(zoneInfo.src);
- if (zoneInfo.src.allHosts != null){
- domainHostList.addAll(zoneInfo.src.allHosts);
- }
+ if (zoneInfo.domains != null){
+ domainHostList.addAll(zoneInfo.domains);
}
this.domainHostList = domainHostList;
- domainHashMap = createDomainDictionary(serverGroups);
+ this.domainHashMap = createDomainDictionary(domainHostList);
ArrayList oldDomainHostList = new ArrayList<>();
- serverGroups = new ArrayList<>();
- if (zoneInfo.old_acc != null){
- serverGroups.add(zoneInfo.old_acc);
- if (zoneInfo.old_acc.allHosts != null){
- oldDomainHostList.addAll(zoneInfo.old_acc.allHosts);
- }
+ if (zoneInfo.old_domains != null){
+ oldDomainHostList.addAll(zoneInfo.old_domains);
}
- if (zoneInfo.old_src != null){
- serverGroups.add(zoneInfo.old_src);
- if (zoneInfo.old_src.allHosts != null){
- oldDomainHostList.addAll(zoneInfo.old_src.allHosts);
- }
- }
- this.oldDomainHostList = oldDomainHostList;
- oldDomainHashMap = createDomainDictionary(serverGroups);
+ this.oldDomainHostList = domainHostList;
+ this.oldDomainHashMap = createDomainDictionary(domainHostList);
}
@Override
@@ -112,15 +92,12 @@ public IUploadServer getNextServer(boolean isOldServer, IUploadServer freezeServ
return server;
}
- private HashMap createDomainDictionary(ArrayList serverGroups){
+ private HashMap createDomainDictionary(List hosts){
HashMap domainHashMap = new HashMap<>();
- for (int i = 0; i < serverGroups.size(); i++) {
- ZoneInfo.UploadServerGroup serverGroup = serverGroups.get(i);
- for (int j = 0; j < serverGroup.allHosts.size(); j++){
- String host = serverGroup.allHosts.get(j);
- UploadServerDomain domain = new UploadServerDomain(host);
- domainHashMap.put(host, domain);
- }
+ for (int i = 0; i < hosts.size(); i++) {
+ String host = hosts.get(i);
+ UploadServerDomain domain = new UploadServerDomain(host);
+ domainHashMap.put(host, domain);
}
return domainHashMap;
}
diff --git a/library/src/main/java/com/qiniu/android/storage/UploadManager.java b/library/src/main/java/com/qiniu/android/storage/UploadManager.java
index 90950d4c7..76a56ee18 100644
--- a/library/src/main/java/com/qiniu/android/storage/UploadManager.java
+++ b/library/src/main/java/com/qiniu/android/storage/UploadManager.java
@@ -333,12 +333,15 @@ private void completeAction(final String token,
reportQuality(responseInfo, taskMetrics, token);
if (completionHandler != null){
+ final Wait wait = new Wait();
AsyncRun.runInMain(new Runnable() {
@Override
public void run() {
completionHandler.complete(key, responseInfo, response);
+ wait.stopWait();
}
});
+ wait.startWait();
}
}