* [android] fix java.util.ConcurrentModificationException
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/fc8028c1 Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/fc8028c1 Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/fc8028c1 Branch: refs/heads/master Commit: fc8028c1ff29c3f5bcedd48a53fbc249325f0fb8 Parents: 640c53f Author: wentao.swt <wentao....@alibaba-inc.com> Authored: Mon Mar 19 19:17:23 2018 +0800 Committer: yuhun-alibaba <tomcat...@gmail.com> Committed: Tue Mar 27 15:59:55 2018 +0800 ---------------------------------------------------------------------- .../com/taobao/weex/bridge/WXBridgeManager.java | 17 ++++++++--------- .../com/taobao/weex/bridge/WXModuleManager.java | 3 ++- 2 files changed, 10 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/fc8028c1/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java index f45150f..cb3bdcd 100644 --- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java +++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java @@ -2107,28 +2107,27 @@ public void invokeDestoryInstance(String instanceId, String namespace, String fu execRegisterFailTask(); WXEnvironment.JsFrameworkInit = true; registerDomModule(); - WXModuleManager.reload(); String reinitInfo = ""; if (reInitCount > 1) { reinitInfo = "reinit Framework:"; - WXExceptionUtils.commitCriticalExceptionRT(null, WXErrorCode.WX_JS_FRAMEWORK_REINIT_SUCCESS, - "initFramework", reinitInfo + "success", null); + // WXExceptionUtils.commitCriticalExceptionRT(null, WXErrorCode.WX_JS_FRAMEWORK_REINIT_SUCCESS, + // "initFramework", reinitInfo + "success", null); } else { -// WXExceptionUtils.commitCriticalExceptionRT(null, WXErrorCode.WX_JS_FRAMEWORK_INIT_SUCCESS.getErrorCode(), -// "initFramework", reinitInfo + "success", null); + // WXExceptionUtils.commitCriticalExceptionRT(null, WXErrorCode.WX_JS_FRAMEWORK_INIT_SUCCESS.getErrorCode(), + // "initFramework", reinitInfo + "success", null); } } else { if (reInitCount > 1) { WXLogUtils.e("[WXBridgeManager] invokeReInitFramework ExecuteJavaScript fail"); String err = "[WXBridgeManager] invokeReInitFramework ExecuteJavaScript fail reinit FrameWork"; - WXExceptionUtils.commitCriticalExceptionRT(null, WXErrorCode.WX_ERR_JS_REINIT_FRAMEWORK, - "initFramework", "reInitCount = " + reInitCount + err, null); + // WXExceptionUtils.commitCriticalExceptionRT(null, WXErrorCode.WX_ERR_JS_REINIT_FRAMEWORK, + // "initFramework", "reInitCount = " + reInitCount + err, null); } else { WXLogUtils.e("[WXBridgeManager] invokeInitFramework ExecuteJavaScript fail"); String err = "[WXBridgeManager] invokeInitFramework ExecuteJavaScript fail"; - WXExceptionUtils.commitCriticalExceptionRT(null, WXErrorCode.WX_ERR_JS_FRAMEWORK, - "initFramework", err, null); + // WXExceptionUtils.commitCriticalExceptionRT(null, WXErrorCode.WX_ERR_JS_FRAMEWORK, + // "initFramework", err, null); } } } catch (Throwable e) { http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/fc8028c1/android/sdk/src/main/java/com/taobao/weex/bridge/WXModuleManager.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/bridge/WXModuleManager.java b/android/sdk/src/main/java/com/taobao/weex/bridge/WXModuleManager.java index 5a8bb89..6bc4af4 100644 --- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXModuleManager.java +++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXModuleManager.java @@ -45,6 +45,7 @@ import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; /** * Manager class for weex module. There are two types of modules in weex, one is instance-level module, @@ -56,7 +57,7 @@ public class WXModuleManager { /** * module class object dictionary */ - private static volatile Map<String, ModuleFactoryImpl> sModuleFactoryMap = new HashMap<>(); + private static volatile ConcurrentMap<String, ModuleFactoryImpl> sModuleFactoryMap = new ConcurrentHashMap<>(); private static Map<String, WXModule> sGlobalModuleMap = new HashMap<>(); private static Map<String, WXDomModule> sDomModuleMap = new HashMap<>();