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();
       }
 

Reply via email to