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 <[email protected]>
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();
}