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

Commit 7659a59

Browse files
Darin726YorkShen
authored andcommitted
* [Android] Restart jsframework if jsEngineMultiThread switch changed (#2126)
1 parent 8f80e8a commit 7659a59

File tree

3 files changed

+41
-3
lines changed

3 files changed

+41
-3
lines changed

android/sdk/src/main/java/com/taobao/weex/WXEnvironment.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,6 @@ public static Map<String, String> getConfig() {
168168
addCustomOptions(WXConfig.debugMode, "true");
169169
}
170170
addCustomOptions(WXConfig.scale, Float.toString(sApplication.getResources().getDisplayMetrics().density));
171-
IWXJscProcessManager wxJscProcessManager = WXSDKManager.getInstance().getWXJscProcessManager();
172-
addCustomOptions("enableBackupThread", String.valueOf(wxJscProcessManager != null && wxJscProcessManager.enableBackupThread()));
173171
}catch (NullPointerException e){
174172
//There is little chance of NullPointerException as sApplication may be null.
175173
WXLogUtils.e("WXEnvironment scale Exception: ", e);

android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,9 @@ public void init(Context context) {
477477
:"unKnowContainer"
478478
);
479479
mContainerInfo.put(WXInstanceApm.KEY_PAGE_PROPERTIES_INSTANCE_TYPE,"page");
480+
481+
WXBridgeManager.getInstance().checkJsEngineMultiThread();
482+
480483
}
481484

482485
/**

android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import com.taobao.weex.WXSDKManager;
4444
import com.taobao.weex.adapter.IWXJSExceptionAdapter;
4545
import com.taobao.weex.adapter.IWXJsFileLoaderAdapter;
46+
import com.taobao.weex.adapter.IWXJscProcessManager;
4647
import com.taobao.weex.adapter.IWXUserTrackAdapter;
4748
import com.taobao.weex.common.IWXBridge;
4849
import com.taobao.weex.common.IWXDebugConfig;
@@ -187,6 +188,9 @@ public class WXBridgeManager implements Callback, BactchExecutor {
187188
// add for cloud setting, default value is false.
188189
// weexcore use single process or not
189190
private static boolean isUseSingleProcess = false;
191+
// add for cloud setting, default value is false.
192+
// jsEngine use multiThread or not
193+
private volatile static boolean isJsEngineMultiThreadEnable = false;
190194

191195
public enum BundType {
192196
Vue,
@@ -266,7 +270,36 @@ public void setUseSingleProcess(final boolean flag) {
266270
// }
267271
}
268272
}
273+
public boolean jsEngineMultiThreadEnable() {
274+
return isJsEngineMultiThreadEnable;
275+
}
269276

277+
public void checkJsEngineMultiThread() {
278+
boolean flag = false;
279+
IWXJscProcessManager wxJscProcessManager = WXSDKManager.getInstance().getWXJscProcessManager();
280+
if(wxJscProcessManager!=null) {
281+
flag = wxJscProcessManager.enableBackupThread();
282+
}
283+
284+
if(flag == WXBridgeManager.isJsEngineMultiThreadEnable) {
285+
return;
286+
}
287+
288+
WXBridgeManager.isJsEngineMultiThreadEnable = flag;
289+
//we should reinit framework if js framework has been initialized
290+
if (isJSFrameworkInit()) {
291+
if (isJSThread()) {
292+
WXSDKEngine.reload();
293+
} else {
294+
post(new Runnable() {
295+
@Override
296+
public void run() {
297+
WXSDKEngine.reload();
298+
}
299+
});
300+
}
301+
}
302+
}
270303
public void setSandBoxContext(final boolean flag) {
271304
if (flag != isSandBoxContext) {
272305
isSandBoxContext = flag;
@@ -1986,6 +2019,8 @@ private void invokeCallJSBatch(Message message) {
19862019
}
19872020

19882021
private WXParams assembleDefaultOptions() {
2022+
checkJsEngineMultiThread();
2023+
19892024
Map<String, String> config = WXEnvironment.getConfig();
19902025
WXParams wxParams = new WXParams();
19912026
wxParams.setPlatform(config.get(WXConfig.os));
@@ -2010,7 +2045,9 @@ private WXParams assembleDefaultOptions() {
20102045
}
20112046
wxParams.setDeviceWidth(TextUtils.isEmpty(config.get("deviceWidth")) ? String.valueOf(WXViewUtils.getScreenWidth(WXEnvironment.sApplication)) : config.get("deviceWidth"));
20122047
wxParams.setDeviceHeight(TextUtils.isEmpty(config.get("deviceHeight")) ? String.valueOf(WXViewUtils.getScreenHeight(WXEnvironment.sApplication)) : config.get("deviceHeight"));
2013-
wxParams.setOptions(WXEnvironment.getCustomOptions());
2048+
Map<String, String> customOptions = WXEnvironment.getCustomOptions();
2049+
customOptions.put("enableBackupThread", String.valueOf(jsEngineMultiThreadEnable()));
2050+
wxParams.setOptions(customOptions);
20142051
wxParams.setNeedInitV8(WXSDKManager.getInstance().needInitV8());
20152052
mInitParams = wxParams;
20162053
return wxParams;

0 commit comments

Comments
 (0)