@@ -1345,7 +1345,7 @@ public void run() {
1345
1345
private void invokeRefreshInstance (String instanceId , WXRefreshData refreshData ) {
1346
1346
try {
1347
1347
WXSDKInstance instance = WXSDKManager .getInstance ().getSDKInstance (instanceId );
1348
- if (!isJSFrameworkInit ()) {
1348
+ if (!isSkipFrameworkInit ( instanceId ) && ! isJSFrameworkInit ()) {
1349
1349
if (instance != null ) {
1350
1350
instance .onRenderError (
1351
1351
WXErrorCode .WX_DEGRAD_ERR_INSTANCE_CREATE_FAILED .getErrorCode (),
@@ -1402,6 +1402,18 @@ public void commitJscCrashAlarmMonitor(final String type, final WXErrorCode erro
1402
1402
}
1403
1403
}
1404
1404
1405
+ private boolean isSkipFrameworkInit (String instanceId ) {
1406
+ final WXSDKInstance instance = WXSDKManager .getInstance ().getSDKInstance (instanceId );
1407
+ return isSkipFrameworkInit (instance );
1408
+ }
1409
+
1410
+ private boolean isSkipFrameworkInit (WXSDKInstance instance ) {
1411
+ if (instance == null ) {
1412
+ return false ;
1413
+ }
1414
+ return instance .skipFrameworkInit ();
1415
+ }
1416
+
1405
1417
/**
1406
1418
* Create instance.
1407
1419
*/
@@ -1426,7 +1438,7 @@ public void createInstance(final String instanceId, final Script template,
1426
1438
return ;
1427
1439
}
1428
1440
1429
- if (!isJSFrameworkInit () && reInitCount == 1 && !WXEnvironment .sDebugServerConnectable ) {
1441
+ if (!isSkipFrameworkInit ( instanceId ) && ! isJSFrameworkInit () && reInitCount == 1 && !WXEnvironment .sDebugServerConnectable ) {
1430
1442
instance .onRenderError (
1431
1443
WXErrorCode .WX_DEGRAD_ERR_INSTANCE_CREATE_FAILED .getErrorCode (),
1432
1444
WXErrorCode .WX_DEGRAD_ERR_INSTANCE_CREATE_FAILED .getErrorMsg () +
@@ -1457,12 +1469,14 @@ public void run() {
1457
1469
private void invokeCreateInstance (@ NonNull WXSDKInstance instance , Script template ,
1458
1470
Map <String , Object > options , String data ) {
1459
1471
// add for sandbox, will delete on sandbox ok
1460
- initFramework ("" );
1472
+ if (!isSkipFrameworkInit (instance )){
1473
+ initFramework ("" );
1474
+ }
1461
1475
1462
1476
if (mMock ) {
1463
1477
mock (instance .getInstanceId ());
1464
1478
} else {
1465
- if (!isJSFrameworkInit ()) {
1479
+ if (!isSkipFrameworkInit ( instance ) && ! isJSFrameworkInit ()) {
1466
1480
String err = "[WXBridgeManager] invokeCreateInstance: framework.js uninitialized." ;
1467
1481
instance .onRenderError (
1468
1482
WXErrorCode .WX_DEGRAD_ERR_INSTANCE_CREATE_FAILED .getErrorCode (),
@@ -1738,7 +1752,7 @@ private void invokeDestroyInstance(String instanceId) {
1738
1752
WXJSObject instanceIdObj = new WXJSObject (WXJSObject .String ,
1739
1753
instanceId );
1740
1754
WXJSObject [] args = {instanceIdObj };
1741
- if (isJSFrameworkInit ()) {
1755
+ if (isSkipFrameworkInit ( instanceId ) || isJSFrameworkInit ()) {
1742
1756
invokeDestoryInstance (instanceId , null , METHOD_DESTROY_INSTANCE , args , true );
1743
1757
// invokeExecJS(instanceId, null, METHOD_DESTROY_INSTANCE, args);
1744
1758
}
@@ -1884,7 +1898,7 @@ private String invokeExecJSOnInstance(String instanceId, String js, int type) {
1884
1898
WXLogUtils .d (mLodBuilder .substring (0 ));
1885
1899
mLodBuilder .setLength (0 );
1886
1900
// }
1887
- if (isJSFrameworkInit ()) {
1901
+ if (isSkipFrameworkInit ( instanceId ) || isJSFrameworkInit ()) {
1888
1902
return mWXBridge .execJSOnInstance (instanceId , js , type );
1889
1903
}
1890
1904
return null ;
@@ -1901,7 +1915,7 @@ private void invokeExecJSWithCallback(String instanceId, String namespace, Strin
1901
1915
WXLogUtils .d (mLodBuilder .substring (0 ));
1902
1916
mLodBuilder .setLength (0 );
1903
1917
}
1904
- if (isJSFrameworkInit ()) {
1918
+ if (isSkipFrameworkInit ( instanceId ) || isJSFrameworkInit ()) {
1905
1919
mWXBridge .execJSWithCallback (instanceId , namespace , function , args , callback );
1906
1920
}
1907
1921
}
@@ -2368,7 +2382,9 @@ public void reportJSException(String instanceId, String function,
2368
2382
exception += "\n getTemplateInfo==" +instance .getTemplateInfo ();//add network header info
2369
2383
if (METHOD_CREATE_INSTANCE .equals (function ) || !instance .isContentMd5Match ()) {
2370
2384
try {
2371
- if (isJSFrameworkInit () && (reInitCount > 1 && reInitCount < 10 ) && !instance .isNeedReLoad ()) {
2385
+ //data render mode should report exception instead of reload page,
2386
+ // so we use !isSkipFrameworkInit(instanceId) to skip the positive branch of if clause.
2387
+ if (!isSkipFrameworkInit (instanceId ) && isJSFrameworkInit () && (reInitCount > 1 && reInitCount < 10 ) && !instance .isNeedReLoad ()) {
2372
2388
new ActionReloadPage (instanceId , true ).executeAction ();
2373
2389
instance .setNeedLoad (true );
2374
2390
return ;
@@ -3086,15 +3102,15 @@ public void bindMeasurementToRenderObject(long ptr){
3086
3102
*/
3087
3103
@ UiThread
3088
3104
public boolean notifyLayout (String instanceId ) {
3089
- if (isJSFrameworkInit ()) {
3105
+ if (isSkipFrameworkInit ( instanceId ) || isJSFrameworkInit ()) {
3090
3106
return mWXBridge .notifyLayout (instanceId );
3091
3107
}
3092
3108
return false ;
3093
3109
}
3094
3110
3095
3111
@ UiThread
3096
3112
public void forceLayout (String instanceId ) {
3097
- if (isJSFrameworkInit ()) {
3113
+ if (isSkipFrameworkInit ( instanceId ) || isJSFrameworkInit ()) {
3098
3114
mWXBridge .forceLayout (instanceId );
3099
3115
}
3100
3116
}
@@ -3105,7 +3121,7 @@ public void forceLayout(String instanceId) {
3105
3121
* @param instanceId
3106
3122
*/
3107
3123
public void onInstanceClose (String instanceId ) {
3108
- if (isJSFrameworkInit ()) {
3124
+ if (isSkipFrameworkInit ( instanceId ) || isJSFrameworkInit ()) {
3109
3125
mWXBridge .onInstanceClose (instanceId );
3110
3126
}
3111
3127
}
@@ -3117,7 +3133,7 @@ public void onInstanceClose(String instanceId) {
3117
3133
* @param defaultHeight
3118
3134
*/
3119
3135
public void setDefaultRootSize (final String instanceId , final float defaultWidth , final float defaultHeight , final boolean isWidthWrapContent , final boolean isHeightWrapContent ) {
3120
- if (isJSFrameworkInit ()) {
3136
+ if (isSkipFrameworkInit ( instanceId ) || isJSFrameworkInit ()) {
3121
3137
mWXBridge .setDefaultHeightAndWidthIntoRootDom (instanceId , defaultWidth , defaultHeight , isWidthWrapContent , isHeightWrapContent );
3122
3138
}
3123
3139
}
@@ -3129,13 +3145,13 @@ public void setRenderContentWrapContentToCore(boolean wrap, final String instanc
3129
3145
}
3130
3146
3131
3147
public void setStyleWidth (String instanceId , String ref , float value ) {
3132
- if (isJSFrameworkInit ()) {
3148
+ if (isSkipFrameworkInit ( instanceId ) || isJSFrameworkInit ()) {
3133
3149
mWXBridge .setStyleWidth (instanceId , ref , value );
3134
3150
}
3135
3151
}
3136
3152
3137
3153
public void setStyleHeight (String instanceId , String ref , float value ) {
3138
- if (isJSFrameworkInit ()) {
3154
+ if (isSkipFrameworkInit ( instanceId ) || isJSFrameworkInit ()) {
3139
3155
mWXBridge .setStyleHeight (instanceId , ref , value );
3140
3156
}
3141
3157
}
@@ -3155,25 +3171,25 @@ public long[] getRenderFinishTime(String instanceId) {
3155
3171
}
3156
3172
3157
3173
public void setMargin (String instanceId , String ref , CSSShorthand .EDGE edge , float value ) {
3158
- if (isJSFrameworkInit ()) {
3174
+ if (isSkipFrameworkInit ( instanceId ) || isJSFrameworkInit ()) {
3159
3175
mWXBridge .setMargin (instanceId , ref , edge , value );
3160
3176
}
3161
3177
}
3162
3178
3163
3179
public void setPadding (String instanceId , String ref , CSSShorthand .EDGE edge , float value ) {
3164
- if (isJSFrameworkInit ()) {
3180
+ if (isSkipFrameworkInit ( instanceId ) || isJSFrameworkInit ()) {
3165
3181
mWXBridge .setPadding (instanceId , ref , edge , value );
3166
3182
}
3167
3183
}
3168
3184
3169
3185
public void setPosition (String instanceId , String ref , CSSShorthand .EDGE edge , float value ) {
3170
- if (isJSFrameworkInit ()) {
3186
+ if (isSkipFrameworkInit ( instanceId ) || isJSFrameworkInit ()) {
3171
3187
mWXBridge .setPosition (instanceId , ref , edge , value );
3172
3188
}
3173
3189
}
3174
3190
3175
3191
public void markDirty (String instanceId , String ref , boolean dirty ) {
3176
- if (isJSFrameworkInit ()) {
3192
+ if (isSkipFrameworkInit ( instanceId ) || isJSFrameworkInit ()) {
3177
3193
mWXBridge .markDirty (instanceId , ref , dirty );
3178
3194
}
3179
3195
}
0 commit comments