This is an automated email from the ASF dual-hosted git repository. dongyayun pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-weex.git
The following commit(s) were added to refs/heads/master by this push: new c72e6b5 [Android] Android] restart weexCoreThread when reload JSEngine because thread maybe in lock state and can't execute reload action (block) (#2824) c72e6b5 is described below commit c72e6b5a833f66ed048042d1e4fb385aa61ed97c Author: chen <lucky-c...@users.noreply.github.com> AuthorDate: Wed Aug 14 17:06:00 2019 +0800 [Android] Android] restart weexCoreThread when reload JSEngine because thread maybe in lock state and can't execute reload action (block) (#2824) --- .../java/com/taobao/weex/bridge/WXBridgeManager.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) 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 aca5ac2..d363651 100755 --- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java +++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java @@ -867,6 +867,14 @@ public class WXBridgeManager implements Callback, BactchExecutor { } + public void restartWeexCoreThread(){ + WXLogUtils.e("weex","restartWeexCoreThread"); + WXThread oldThread = mJSThread; + mJSThread = new WXThread("WeexJSBridgeThread", this); + mJSHandler = mJSThread.getHandler(); + oldThread.quit(); + } + public int callReportCrashReloadPage(String instanceId, String crashFile) { boolean isCrashFileEmpty = TextUtils.isEmpty(crashFile); try { @@ -914,6 +922,17 @@ public class WXBridgeManager implements Callback, BactchExecutor { if (WXSDKManager.getInstance().getSDKInstance(instanceId) != null) { boolean reloadThisInstance = shouldReloadCurrentInstance( WXSDKManager.getInstance().getSDKInstance(instanceId).getBundleUrl()); + boolean restartCoreThread = true; + IWXConfigAdapter adapter = WXSDKManager.getInstance().getWxConfigAdapter(); + if (null != adapter){ + String config = adapter.getConfig("wxapm","restartCoreThread","true"); + restartCoreThread = Boolean.valueOf(config); + } + if (restartCoreThread){ + WXBridgeManager.getInstance().restartWeexCoreThread(); + } + WXSDKManager.getInstance().getSDKInstance(instanceId).getContainerInfo() + .put("restartWeexCoreThread",String.valueOf(restartCoreThread)); new ActionReloadPage(instanceId, reloadThisInstance).executeAction(); }