Skip to content
This repository has been archived by the owner on Jun 3, 2021. It is now read-only.

Commit

Permalink
* [Android] Restart jsframework if jsEngineMultiThread switch changed (
Browse files Browse the repository at this point in the history
  • Loading branch information
Darin726 authored and YorkShen committed Feb 14, 2019
1 parent 8f80e8a commit 7659a59
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 3 deletions.
2 changes: 0 additions & 2 deletions android/sdk/src/main/java/com/taobao/weex/WXEnvironment.java
Original file line number Diff line number Diff line change
Expand Up @@ -168,8 +168,6 @@ public static Map<String, String> getConfig() {
addCustomOptions(WXConfig.debugMode, "true");
}
addCustomOptions(WXConfig.scale, Float.toString(sApplication.getResources().getDisplayMetrics().density));
IWXJscProcessManager wxJscProcessManager = WXSDKManager.getInstance().getWXJscProcessManager();
addCustomOptions("enableBackupThread", String.valueOf(wxJscProcessManager != null && wxJscProcessManager.enableBackupThread()));
}catch (NullPointerException e){
//There is little chance of NullPointerException as sApplication may be null.
WXLogUtils.e("WXEnvironment scale Exception: ", e);
Expand Down
3 changes: 3 additions & 0 deletions android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
Original file line number Diff line number Diff line change
Expand Up @@ -477,6 +477,9 @@ public void init(Context context) {
:"unKnowContainer"
);
mContainerInfo.put(WXInstanceApm.KEY_PAGE_PROPERTIES_INSTANCE_TYPE,"page");

WXBridgeManager.getInstance().checkJsEngineMultiThread();

}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
import com.taobao.weex.WXSDKManager;
import com.taobao.weex.adapter.IWXJSExceptionAdapter;
import com.taobao.weex.adapter.IWXJsFileLoaderAdapter;
import com.taobao.weex.adapter.IWXJscProcessManager;
import com.taobao.weex.adapter.IWXUserTrackAdapter;
import com.taobao.weex.common.IWXBridge;
import com.taobao.weex.common.IWXDebugConfig;
Expand Down Expand Up @@ -187,6 +188,9 @@ public class WXBridgeManager implements Callback, BactchExecutor {
// add for cloud setting, default value is false.
// weexcore use single process or not
private static boolean isUseSingleProcess = false;
// add for cloud setting, default value is false.
// jsEngine use multiThread or not
private volatile static boolean isJsEngineMultiThreadEnable = false;

public enum BundType {
Vue,
Expand Down Expand Up @@ -266,7 +270,36 @@ public void setUseSingleProcess(final boolean flag) {
// }
}
}
public boolean jsEngineMultiThreadEnable() {
return isJsEngineMultiThreadEnable;
}

public void checkJsEngineMultiThread() {
boolean flag = false;
IWXJscProcessManager wxJscProcessManager = WXSDKManager.getInstance().getWXJscProcessManager();
if(wxJscProcessManager!=null) {
flag = wxJscProcessManager.enableBackupThread();
}

if(flag == WXBridgeManager.isJsEngineMultiThreadEnable) {
return;
}

WXBridgeManager.isJsEngineMultiThreadEnable = flag;
//we should reinit framework if js framework has been initialized
if (isJSFrameworkInit()) {
if (isJSThread()) {
WXSDKEngine.reload();
} else {
post(new Runnable() {
@Override
public void run() {
WXSDKEngine.reload();
}
});
}
}
}
public void setSandBoxContext(final boolean flag) {
if (flag != isSandBoxContext) {
isSandBoxContext = flag;
Expand Down Expand Up @@ -1986,6 +2019,8 @@ private void invokeCallJSBatch(Message message) {
}

private WXParams assembleDefaultOptions() {
checkJsEngineMultiThread();

Map<String, String> config = WXEnvironment.getConfig();
WXParams wxParams = new WXParams();
wxParams.setPlatform(config.get(WXConfig.os));
Expand All @@ -2010,7 +2045,9 @@ private WXParams assembleDefaultOptions() {
}
wxParams.setDeviceWidth(TextUtils.isEmpty(config.get("deviceWidth")) ? String.valueOf(WXViewUtils.getScreenWidth(WXEnvironment.sApplication)) : config.get("deviceWidth"));
wxParams.setDeviceHeight(TextUtils.isEmpty(config.get("deviceHeight")) ? String.valueOf(WXViewUtils.getScreenHeight(WXEnvironment.sApplication)) : config.get("deviceHeight"));
wxParams.setOptions(WXEnvironment.getCustomOptions());
Map<String, String> customOptions = WXEnvironment.getCustomOptions();
customOptions.put("enableBackupThread", String.valueOf(jsEngineMultiThreadEnable()));
wxParams.setOptions(customOptions);
wxParams.setNeedInitV8(WXSDKManager.getInstance().needInitV8());
mInitParams = wxParams;
return wxParams;
Expand Down

0 comments on commit 7659a59

Please sign in to comment.