43
43
import com .taobao .weex .WXSDKManager ;
44
44
import com .taobao .weex .adapter .IWXJSExceptionAdapter ;
45
45
import com .taobao .weex .adapter .IWXJsFileLoaderAdapter ;
46
+ import com .taobao .weex .adapter .IWXJscProcessManager ;
46
47
import com .taobao .weex .adapter .IWXUserTrackAdapter ;
47
48
import com .taobao .weex .common .IWXBridge ;
48
49
import com .taobao .weex .common .IWXDebugConfig ;
@@ -187,6 +188,9 @@ public class WXBridgeManager implements Callback, BactchExecutor {
187
188
// add for cloud setting, default value is false.
188
189
// weexcore use single process or not
189
190
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 ;
190
194
191
195
public enum BundType {
192
196
Vue ,
@@ -266,7 +270,36 @@ public void setUseSingleProcess(final boolean flag) {
266
270
// }
267
271
}
268
272
}
273
+ public boolean jsEngineMultiThreadEnable () {
274
+ return isJsEngineMultiThreadEnable ;
275
+ }
269
276
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
+ }
270
303
public void setSandBoxContext (final boolean flag ) {
271
304
if (flag != isSandBoxContext ) {
272
305
isSandBoxContext = flag ;
@@ -1986,6 +2019,8 @@ private void invokeCallJSBatch(Message message) {
1986
2019
}
1987
2020
1988
2021
private WXParams assembleDefaultOptions () {
2022
+ checkJsEngineMultiThread ();
2023
+
1989
2024
Map <String , String > config = WXEnvironment .getConfig ();
1990
2025
WXParams wxParams = new WXParams ();
1991
2026
wxParams .setPlatform (config .get (WXConfig .os ));
@@ -2010,7 +2045,9 @@ private WXParams assembleDefaultOptions() {
2010
2045
}
2011
2046
wxParams .setDeviceWidth (TextUtils .isEmpty (config .get ("deviceWidth" )) ? String .valueOf (WXViewUtils .getScreenWidth (WXEnvironment .sApplication )) : config .get ("deviceWidth" ));
2012
2047
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 );
2014
2051
wxParams .setNeedInitV8 (WXSDKManager .getInstance ().needInitV8 ());
2015
2052
mInitParams = wxParams ;
2016
2053
return wxParams ;
0 commit comments