* [android] modify log print
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/b5126471 Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/b5126471 Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/b5126471 Branch: refs/heads/release Commit: b5126471d1b3d9ab04e1c1e39cc636079c47cf58 Parents: 8cebed4 Author: zshshr <zhengshihan...@gmail.com> Authored: Tue Oct 10 12:06:33 2017 +0800 Committer: zshshr <zhengshihan...@gmail.com> Committed: Tue Oct 17 10:56:05 2017 +0800 ---------------------------------------------------------------------- .../main/java/com/taobao/weex/WXSDKEngine.java | 6 + .../com/taobao/weex/bridge/WXBridgeManager.java | 993 +++++++++---------- .../java/com/taobao/weex/dom/WXDomObject.java | 4 +- .../dom/action/AbstractAddElementAction.java | 4 +- .../weex/ui/component/WXComponentFactory.java | 2 - .../java/com/taobao/weex/utils/WXLogUtils.java | 24 +- 6 files changed, 513 insertions(+), 520 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b5126471/android/sdk/src/main/java/com/taobao/weex/WXSDKEngine.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/WXSDKEngine.java b/android/sdk/src/main/java/com/taobao/weex/WXSDKEngine.java index 3a287cc..0296379 100644 --- a/android/sdk/src/main/java/com/taobao/weex/WXSDKEngine.java +++ b/android/sdk/src/main/java/com/taobao/weex/WXSDKEngine.java @@ -93,6 +93,7 @@ import com.taobao.weex.ui.module.WXMetaModule; import com.taobao.weex.ui.module.WXModalUIModule; import com.taobao.weex.ui.module.WXTimerModule; import com.taobao.weex.ui.module.WXWebViewModule; +import com.taobao.weex.utils.LogLevel; import com.taobao.weex.utils.WXLogUtils; import com.taobao.weex.utils.WXSoInstallMgrSdk; import com.taobao.weex.utils.batch.BatchOperationHelper; @@ -158,6 +159,11 @@ public class WXSDKEngine { } long start = System.currentTimeMillis(); WXEnvironment.sSDKInitStart = start; + if(WXEnvironment.isApkDebugable()){ + WXEnvironment.sLogLevel = LogLevel.DEBUG; + }else{ + WXEnvironment.sLogLevel = LogLevel.WARN; + } doInitInternal(application,config); WXEnvironment.sSDKInitInvokeTime = System.currentTimeMillis()-start; WXLogUtils.renderPerformanceLog("SDKInitInvokeTime", WXEnvironment.sSDKInitInvokeTime); http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b5126471/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java ---------------------------------------------------------------------- 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 713c4c2..c44d7af 100644 --- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java +++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java @@ -84,26 +84,26 @@ import static com.taobao.weex.bridge.WXModuleManager.getDomModule; /** * Manager class for communication between JavaScript and Android. * <ol> - * <li> - * Handle Android to JavaScript call, can be one of the following - * <ul> - * <li>{@link #createInstance(String, String, Map, String)}</li> - * <li>{@link #destroyInstance(String)}</li> - * <li>{@link #refreshInstance(String, WXRefreshData)}</li> - * <li>{@link #registerModules(Map)}</li> - * <li>{@link #registerComponents(List)}</li> - * <li>{@link #invokeCallJSBatch(Message)}</li> - * </ul> - * </li> - * <li> - * Handle JavaScript to Android call - * </li> - * <li> - * Handle next tick of message. - * </li> + * <li> + * Handle Android to JavaScript call, can be one of the following + * <ul> + * <li>{@link #createInstance(String, String, Map, String)}</li> + * <li>{@link #destroyInstance(String)}</li> + * <li>{@link #refreshInstance(String, WXRefreshData)}</li> + * <li>{@link #registerModules(Map)}</li> + * <li>{@link #registerComponents(List)}</li> + * <li>{@link #invokeCallJSBatch(Message)}</li> + * </ul> + * </li> + * <li> + * Handle JavaScript to Android call + * </li> + * <li> + * Handle next tick of message. + * </li> * </ol> */ -public class WXBridgeManager implements Callback,BactchExecutor { +public class WXBridgeManager implements Callback, BactchExecutor { public static final String METHOD_CREATE_INSTANCE = "createInstance"; public static final String METHOD_DESTROY_INSTANCE = "destroyInstance"; @@ -129,33 +129,28 @@ public class WXBridgeManager implements Callback,BactchExecutor { public static final String KEY_PARAMS = "params"; public static final String ARGS = "args"; public static final String OPTIONS = "options"; + public static final String INITLOGFILE = "/jsserver_start.log"; private static final String NON_CALLBACK = "-1"; private static final String UNDEFINED = "undefined"; - private static final int INIT_FRAMEWORK_OK = 1; - - private static long LOW_MEM_VALUE = 120; - - static volatile WXBridgeManager mBridgeManager; - private static final int CRASHREINIT = 50; + static volatile WXBridgeManager mBridgeManager; + private static long LOW_MEM_VALUE = 120; private static int reInitCount = 1; - private static String crashUrl = null; private static long lastCrashTime = 0; - public static final String INITLOGFILE = "/jsserver_start.log"; - - + /** + * package + **/ + Handler mJSHandler; /** * next tick tasks, can set priority */ private WXHashMap<String, ArrayList<WXHashMap<String, Object>>> mNextTickTasks = new WXHashMap<>(); - /** * JSThread */ private WXThread mJSThread; - /** package **/ Handler mJSHandler; private IWXBridge mWXBridge; private IWXDebugProxy mWxDebugProxy; @@ -163,22 +158,13 @@ public class WXBridgeManager implements Callback,BactchExecutor { /** * Whether JS Framework(main.js) has been initialized. */ - private boolean mInit =false; - - private boolean isJSFrameworkInit(){ - return mInit; - } - + private boolean mInit = false; private List<Map<String, Object>> mRegisterComponentFailList = new ArrayList<>(8); private List<Map<String, Object>> mRegisterModuleFailList = new ArrayList<>(8); private List<String> mRegisterServiceFailList = new ArrayList<>(8); - private List<String> mDestroyedInstanceId = new ArrayList<>(); - private StringBuilder mLodBuilder = new StringBuilder(50); - private Interceptor mInterceptor; - private WXParams mInitParams; private WXBridgeManager() { @@ -198,6 +184,10 @@ public class WXBridgeManager implements Callback,BactchExecutor { return mBridgeManager; } + private boolean isJSFrameworkInit() { + return mInit; + } + private void initWXBridge(boolean remoteDebug) { if (remoteDebug && WXEnvironment.isApkDebugable()) { WXEnvironment.sDebugServerConnectable = true; @@ -214,7 +204,7 @@ public class WXBridgeManager implements Callback,BactchExecutor { Constructor constructor = clazz.getConstructor(Context.class, WXBridgeManager.class); if (constructor != null) { mWxDebugProxy = (IWXDebugProxy) constructor.newInstance( - WXEnvironment.getApplication(), WXBridgeManager.this); + WXEnvironment.getApplication(), WXBridgeManager.this); if (mWxDebugProxy != null) { mWxDebugProxy.start(); } @@ -242,36 +232,36 @@ public class WXBridgeManager implements Callback,BactchExecutor { } } - public Object callModuleMethod(String instanceId, String moduleStr, String methodStr, JSONArray args) { - return callModuleMethod(instanceId, moduleStr, methodStr, args, null); + public Object callModuleMethod(String instanceId, String moduleStr, String methodStr, JSONArray args) { + return callModuleMethod(instanceId, moduleStr, methodStr, args, null); } - public Object callModuleMethod(String instanceId, String moduleStr, String methodStr, JSONArray args, JSONObject options) { - WXSDKInstance wxsdkInstance = WXSDKManager.getInstance() - .getSDKInstance(instanceId); - if (wxsdkInstance == null) { + public Object callModuleMethod(String instanceId, String moduleStr, String methodStr, JSONArray args, JSONObject options) { + WXSDKInstance wxsdkInstance = WXSDKManager.getInstance() + .getSDKInstance(instanceId); + if (wxsdkInstance == null) { + return null; + } + if (wxsdkInstance.isNeedValidate() + && WXSDKManager.getInstance().getValidateProcessor() != null) { + WXValidateProcessor.WXModuleValidateResult validateResult = WXSDKManager + .getInstance().getValidateProcessor() + .onModuleValidate(wxsdkInstance, moduleStr, methodStr, args, options); + if (validateResult == null) { return null; } - if (wxsdkInstance.isNeedValidate() - && WXSDKManager.getInstance().getValidateProcessor() != null) { - WXValidateProcessor.WXModuleValidateResult validateResult = WXSDKManager - .getInstance().getValidateProcessor() - .onModuleValidate(wxsdkInstance, moduleStr, methodStr, args, options); - if (validateResult == null) { - return null; - } - if (validateResult.isSuccess) { - return WXModuleManager.callModuleMethod(instanceId, moduleStr, methodStr, - args); - } else { - JSONObject validateInfo = validateResult.validateInfo; - if (validateInfo != null) { - WXLogUtils.e("[WXBridgeManager] module validate fail. >>> " + validateInfo.toJSONString()); - } - return validateInfo; - } + if (validateResult.isSuccess) { + return WXModuleManager.callModuleMethod(instanceId, moduleStr, methodStr, + args); + } else { + JSONObject validateInfo = validateResult.validateInfo; + if (validateInfo != null) { + WXLogUtils.e("[WXBridgeManager] module validate fail. >>> " + validateInfo.toJSONString()); + } + return validateInfo; } - return WXModuleManager.callModuleMethod(instanceId, moduleStr, methodStr, args); + } + return WXModuleManager.callModuleMethod(instanceId, moduleStr, methodStr, args); } /** @@ -284,6 +274,7 @@ public class WXBridgeManager implements Callback,BactchExecutor { /** * Set current Instance + * * @param instanceId {@link WXSDKInstance#mInstanceId} */ public synchronized void setStackTopInstance(final String instanceId) { @@ -297,12 +288,12 @@ public class WXBridgeManager implements Callback,BactchExecutor { } @Override - public void post(Runnable r){ - if(mInterceptor != null && mInterceptor.take(r)){ + public void post(Runnable r) { + if (mInterceptor != null && mInterceptor.take(r)) { //task is token by the interceptor return; } - if (mJSHandler == null){ + if (mJSHandler == null) { return; } @@ -335,15 +326,15 @@ public class WXBridgeManager implements Callback,BactchExecutor { mJSHandler.sendMessageDelayed(message, timerInfo.time); } - public void sendMessageDelayed(Message message, long delayMillis){ + public void sendMessageDelayed(Message message, long delayMillis) { if (message == null || mJSHandler == null || mJSThread == null || !mJSThread.isWXThreadAlive() || mJSThread.getLooper() == null) { return; } - mJSHandler.sendMessageDelayed(message,delayMillis); + mJSHandler.sendMessageDelayed(message, delayMillis); } - public void removeMessage(int what,Object obj){ + public void removeMessage(int what, Object obj) { if (mJSHandler == null || mJSThread == null || !mJSThread.isWXThreadAlive() || mJSThread.getLooper() == null) { return; @@ -351,98 +342,97 @@ public class WXBridgeManager implements Callback,BactchExecutor { mJSHandler.removeMessages(what, obj); } - public Object callNativeModule(String instanceId, String module, String method, JSONArray arguments, Object options) { + public Object callNativeModule(String instanceId, String module, String method, JSONArray arguments, Object options) { - if (WXEnvironment.isApkDebugable()) { - mLodBuilder.append("[WXBridgeManager] callNativeModule >>>> instanceId:").append(instanceId) - .append(", module:").append(module).append(", method:").append(method).append(", arguments:").append(arguments); - WXLogUtils.d(mLodBuilder.substring(0)); - mLodBuilder.setLength(0); - } - - try { - if(WXDomModule.WXDOM.equals(module)){ - WXDomModule dom = getDomModule(instanceId); - return dom.callDomMethod(method,arguments); - }else { - return callModuleMethod(instanceId, module, - method, arguments); - } - } catch (Exception e) { - WXLogUtils.e("[WXBridgeManager] callNative exception: ", e); - commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_INVOKE_NATIVE, "[WXBridgeManager] callNativeModule exception " + e.getCause()); - } + if (WXEnvironment.isApkDebugable()) { + mLodBuilder.append("[WXBridgeManager] callNativeModule >>>> instanceId:").append(instanceId) + .append(", module:").append(module).append(", method:").append(method).append(", arguments:").append(arguments); + WXLogUtils.d(mLodBuilder.substring(0)); + mLodBuilder.setLength(0); + } - return null; + try { + if (WXDomModule.WXDOM.equals(module)) { + WXDomModule dom = getDomModule(instanceId); + return dom.callDomMethod(method, arguments); + } else { + return callModuleMethod(instanceId, module, + method, arguments); + } + } catch (Exception e) { + WXLogUtils.e("[WXBridgeManager] callNative exception: ", e); + commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_INVOKE_NATIVE, "[WXBridgeManager] callNativeModule exception " + e.getCause()); } - public Object callNativeModule(String instanceId, String module,String method, JSONArray arguments, JSONObject options) { - if (WXEnvironment.isApkDebugable()) { - mLodBuilder.append("[WXBridgeManager] callNativeModule >>>> instanceId:").append(instanceId) - .append(", module:").append(module).append(", method:").append(method).append(", arguments:").append(arguments); - WXLogUtils.d(mLodBuilder.substring(0)); - mLodBuilder.setLength(0); - } + return null; + } - try { - if(WXDomModule.WXDOM.equals(module)){ - WXDomModule dom = getDomModule(instanceId); - return dom.callDomMethod(method,arguments); - }else { - return callModuleMethod(instanceId, module, - method, arguments, options); - } - } catch (Exception e) { - WXLogUtils.e("[WXBridgeManager] callNative exception: ", e); - commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_INVOKE_NATIVE, "[WXBridgeManager] callNativeModule exception " + e.getCause()); - } + public Object callNativeModule(String instanceId, String module, String method, JSONArray arguments, JSONObject options) { - return null; + if (WXEnvironment.isApkDebugable()) { + mLodBuilder.append("[WXBridgeManager] callNativeModule >>>> instanceId:").append(instanceId) + .append(", module:").append(module).append(", method:").append(method).append(", arguments:").append(arguments); + WXLogUtils.d(mLodBuilder.substring(0)); + mLodBuilder.setLength(0); } - public Object callNativeComponent(String instanceId, String componentRef, String method, JSONArray arguments, Object options) { - if (WXEnvironment.isApkDebugable()) { - mLodBuilder.append("[WXBridgeManager] callNativeComponent >>>> instanceId:").append(instanceId) - .append(", componentRef:").append(componentRef).append(", method:").append(method).append(", arguments:").append(arguments); - WXLogUtils.d(mLodBuilder.substring(0)); - mLodBuilder.setLength(0); - } - try { + try { + if (WXDomModule.WXDOM.equals(module)) { + WXDomModule dom = getDomModule(instanceId); + return dom.callDomMethod(method, arguments); + } else { + return callModuleMethod(instanceId, module, + method, arguments, options); + } + } catch (Exception e) { + WXLogUtils.e("[WXBridgeManager] callNative exception: ", e); + commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_INVOKE_NATIVE, "[WXBridgeManager] callNativeModule exception " + e.getCause()); + } - WXDomModule dom = getDomModule(instanceId); - dom.invokeMethod(componentRef, method, arguments); + return null; + } - } catch (Exception e) { - WXLogUtils.e("[WXBridgeManager] callNative exception: ", e); - commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_INVOKE_NATIVE, "[WXBridgeManager] callNativeModule exception " + e.getCause()); - } - return null; + public Object callNativeComponent(String instanceId, String componentRef, String method, JSONArray arguments, Object options) { + if (WXEnvironment.isApkDebugable()) { + mLodBuilder.append("[WXBridgeManager] callNativeComponent >>>> instanceId:").append(instanceId) + .append(", componentRef:").append(componentRef).append(", method:").append(method).append(", arguments:").append(arguments); + WXLogUtils.d(mLodBuilder.substring(0)); + mLodBuilder.setLength(0); } + try { + + WXDomModule dom = getDomModule(instanceId); + dom.invokeMethod(componentRef, method, arguments); + + } catch (Exception e) { + WXLogUtils.e("[WXBridgeManager] callNative exception: ", e); + commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_INVOKE_NATIVE, "[WXBridgeManager] callNativeModule exception " + e.getCause()); + } + return null; + } /** * Dispatch the native task to be executed. - * + * * @param instanceId {@link WXSDKInstance#mInstanceId} - * @param tasks tasks to be executed - * @param callback next tick id + * @param tasks tasks to be executed + * @param callback next tick id */ public int callNative(String instanceId, String tasks, String callback) { if (TextUtils.isEmpty(tasks)) { - if (WXEnvironment.isApkDebugable()) { - WXLogUtils.e("[WXBridgeManager] callNative: call Native tasks is null"); - } - commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_INVOKE_NATIVE,"[WXBridgeManager] callNative: call Native tasks is null"); + WXLogUtils.e("[WXBridgeManager] callNative: call Native tasks is null"); + commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_INVOKE_NATIVE, "[WXBridgeManager] callNative: call Native tasks is null"); return IWXBridge.INSTANCE_RENDERING_ERROR; } // if (WXEnvironment.isApkDebugable()) { - mLodBuilder.append("[WXBridgeManager] callNative >>>> instanceId:").append(instanceId) - .append(", tasks:").append(tasks).append(", callback:").append(callback); - WXLogUtils.d(mLodBuilder.substring(0)); - mLodBuilder.setLength(0); + mLodBuilder.append("[WXBridgeManager] callNative >>>> instanceId:").append(instanceId) + .append(", tasks:").append(tasks).append(", callback:").append(callback); + WXLogUtils.d(mLodBuilder.substring(0)); + mLodBuilder.setLength(0); // } - if(mDestroyedInstanceId!=null &&mDestroyedInstanceId.contains(instanceId)){ + if (mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) { return IWXBridge.DESTROY_INSTANCE; } @@ -452,7 +442,7 @@ public class WXBridgeManager implements Callback,BactchExecutor { JSONArray array = JSON.parseArray(tasks); parseNanos = System.nanoTime() - parseNanos; - if(WXSDKManager.getInstance().getSDKInstance(instanceId)!=null) { + if (WXSDKManager.getInstance().getSDKInstance(instanceId) != null) { WXSDKManager.getInstance().getSDKInstance(instanceId).jsonParseTime(System.currentTimeMillis() - start); } @@ -464,27 +454,27 @@ public class WXBridgeManager implements Callback,BactchExecutor { task = (JSONObject) array.get(i); if (task != null && WXSDKManager.getInstance().getSDKInstance(instanceId) != null) { Object target = task.get(MODULE); - if(target != null){ - if(WXDomModule.WXDOM.equals(target)){ + if (target != null) { + if (WXDomModule.WXDOM.equals(target)) { WXDomModule dom = getDomModule(instanceId); - dom.callDomMethod(task,parseNanos); - }else { + dom.callDomMethod(task, parseNanos); + } else { JSONObject optionObj = task.getJSONObject(OPTIONS); callModuleMethod(instanceId, (String) target, - (String) task.get(METHOD), (JSONArray) task.get(ARGS), optionObj); + (String) task.get(METHOD), (JSONArray) task.get(ARGS), optionObj); } - }else if(task.get(COMPONENT) != null){ + } else if (task.get(COMPONENT) != null) { //call component WXDomModule dom = getDomModule(instanceId); - dom.invokeMethod((String) task.get(REF),(String) task.get(METHOD),(JSONArray) task.get(ARGS)); - }else{ + dom.invokeMethod((String) task.get(REF), (String) task.get(METHOD), (JSONArray) task.get(ARGS)); + } else { throw new IllegalArgumentException("unknown callNative"); } } } } catch (Exception e) { WXLogUtils.e("[WXBridgeManager] callNative exception: ", e); - commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_INVOKE_NATIVE,"[WXBridgeManager] callNative exception "+e.getCause()); + commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_INVOKE_NATIVE, "[WXBridgeManager] callNative exception " + e.getCause()); } } @@ -500,21 +490,21 @@ public class WXBridgeManager implements Callback,BactchExecutor { public int callCreateBody(String instanceId, String tasks, String callback) { if (TextUtils.isEmpty(tasks)) { // if (WXEnvironment.isApkDebugable()) { - WXLogUtils.d("[WXBridgeManager] callCreateBody: call CreateBody tasks is null"); + WXLogUtils.d("[WXBridgeManager] callCreateBody: call CreateBody tasks is null"); // } - commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_DOM_CREATEBODY,"[WXBridgeManager] callCreateBody: call CreateBody tasks is null"); + commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_DOM_CREATEBODY, "[WXBridgeManager] callCreateBody: call CreateBody tasks is null"); return IWXBridge.INSTANCE_RENDERING_ERROR; } // if (WXEnvironment.isApkDebugable()) { - mLodBuilder.append("[WXBridgeManager] callCreateBody >>>> instanceId:").append(instanceId) - .append(", tasks:").append(tasks).append(", callback:").append(callback); - WXLogUtils.d(mLodBuilder.substring(0)); - mLodBuilder.setLength(0); + mLodBuilder.append("[WXBridgeManager] callCreateBody >>>> instanceId:").append(instanceId) + .append(", tasks:").append(tasks).append(", callback:").append(callback); + WXLogUtils.d(mLodBuilder.substring(0)); + mLodBuilder.setLength(0); // } - if(mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)){ + if (mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) { return IWXBridge.DESTROY_INSTANCE; } @@ -527,7 +517,7 @@ public class WXBridgeManager implements Callback,BactchExecutor { WXDomModule domModule = getDomModule(instanceId); Action action = Actions.getCreateBody(domObject); - domModule.postAction((DOMAction)action, true); + domModule.postAction((DOMAction) action, true); if (WXTracing.isAvailable() && action instanceof TraceableAction) { ((TraceableAction) action).mParseJsonNanos = nanosTemp; @@ -536,8 +526,8 @@ public class WXBridgeManager implements Callback,BactchExecutor { } } } catch (Exception e) { - WXLogUtils.e("[WXBridgeManager] callCreateBody exception: ", e); - commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_DOM_CREATEBODY,"[WXBridgeManager] callCreateBody exception "+e.getCause()); + WXLogUtils.e("[WXBridgeManager] callCreateBody exception: ", e); + commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_DOM_CREATEBODY, "[WXBridgeManager] callCreateBody exception " + e.getCause()); } if (UNDEFINED.equals(callback) || NON_CALLBACK.equals(callback)) { @@ -553,12 +543,12 @@ public class WXBridgeManager implements Callback,BactchExecutor { public int callUpdateFinish(String instanceId, String callback) { if (WXEnvironment.isApkDebugable()) { mLodBuilder.append("[WXBridgeManager] callUpdateFinish >>>> instanceId:").append(instanceId) - .append(", callback:").append(callback); + .append(", callback:").append(callback); WXLogUtils.d(mLodBuilder.substring(0)); mLodBuilder.setLength(0); } - if(mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)){ + if (mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) { return IWXBridge.DESTROY_INSTANCE; } @@ -566,11 +556,11 @@ public class WXBridgeManager implements Callback,BactchExecutor { if (WXSDKManager.getInstance().getSDKInstance(instanceId) != null) { WXDomModule domModule = getDomModule(instanceId); Action action = Actions.getUpdateFinish(); - domModule.postAction((DOMAction)action, false); + domModule.postAction((DOMAction) action, false); } } catch (Exception e) { WXLogUtils.e("[WXBridgeManager] callUpdateFinish exception: ", e); - commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_INVOKE_NATIVE,"[WXBridgeManager] callUpdateFinish exception "+e.getCause()); + commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_INVOKE_NATIVE, "[WXBridgeManager] callUpdateFinish exception " + e.getCause()); } if (UNDEFINED.equals(callback) || NON_CALLBACK.equals(callback)) { @@ -584,13 +574,13 @@ public class WXBridgeManager implements Callback,BactchExecutor { // callCreateFinish public int callCreateFinish(String instanceId, String callback) { // if (WXEnvironment.isApkDebugable()) { - mLodBuilder.append("[WXBridgeManager] callCreateFinish >>>> instanceId:").append(instanceId) - .append(", callback:").append(callback); - WXLogUtils.d(mLodBuilder.substring(0)); - mLodBuilder.setLength(0); + mLodBuilder.append("[WXBridgeManager] callCreateFinish >>>> instanceId:").append(instanceId) + .append(", callback:").append(callback); + WXLogUtils.d(mLodBuilder.substring(0)); + mLodBuilder.setLength(0); // } - if(mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) { + if (mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) { return IWXBridge.DESTROY_INSTANCE; } @@ -598,11 +588,11 @@ public class WXBridgeManager implements Callback,BactchExecutor { if (WXSDKManager.getInstance().getSDKInstance(instanceId) != null) { WXDomModule domModule = getDomModule(instanceId); Action action = Actions.getCreateFinish(); - domModule.postAction((DOMAction)action, false); + domModule.postAction((DOMAction) action, false); } } catch (Exception e) { WXLogUtils.e("[WXBridgeManager] callCreateFinish exception: ", e); - commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERROR_DOM_CREATEFINISH,"[WXBridgeManager] callCreateFinish exception " + e.getCause()); + commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERROR_DOM_CREATEFINISH, "[WXBridgeManager] callCreateFinish exception " + e.getCause()); } if (UNDEFINED.equals(callback) || NON_CALLBACK.equals(callback)) { @@ -618,12 +608,12 @@ public class WXBridgeManager implements Callback,BactchExecutor { public int callRefreshFinish(String instanceId, String callback) { if (WXEnvironment.isApkDebugable()) { mLodBuilder.append("[WXBridgeManager] callRefreshFinish >>>> instanceId:").append(instanceId) - .append(", callback:").append(callback); + .append(", callback:").append(callback); WXLogUtils.d(mLodBuilder.substring(0)); mLodBuilder.setLength(0); } - if(mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) { + if (mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) { return IWXBridge.DESTROY_INSTANCE; } @@ -631,11 +621,11 @@ public class WXBridgeManager implements Callback,BactchExecutor { if (WXSDKManager.getInstance().getSDKInstance(instanceId) != null) { WXDomModule domModule = getDomModule(instanceId); Action action = Actions.getRefreshFinish(); - domModule.postAction((DOMAction)action, false); + domModule.postAction((DOMAction) action, false); } } catch (Exception e) { WXLogUtils.e("[WXBridgeManager] callRefreshFinish exception: ", e); - commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERROR_DOM_REFRESHFINISH,"[WXBridgeManager] callRefreshFinish exception " + e.getCause()); + commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERROR_DOM_REFRESHFINISH, "[WXBridgeManager] callRefreshFinish exception " + e.getCause()); } if (UNDEFINED.equals(callback) || NON_CALLBACK.equals(callback)) { @@ -650,22 +640,20 @@ public class WXBridgeManager implements Callback,BactchExecutor { // callUpdateAttrs public int callUpdateAttrs(String instanceId, String ref, String task, String callback) { if (TextUtils.isEmpty(task)) { - if (WXEnvironment.isApkDebugable()) { - WXLogUtils.e("[WXBridgeManager] callUpdateAttrs: call UpdateAttrs tasks is null"); - } - commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_DOM_UPDATEATTRS,"[WXBridgeManager] callUpdateAttrs: call UpdateAttrs tasks is null"); + WXLogUtils.e("[WXBridgeManager] callUpdateAttrs: call UpdateAttrs tasks is null"); + commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_DOM_UPDATEATTRS, "[WXBridgeManager] callUpdateAttrs: call UpdateAttrs tasks is null"); return IWXBridge.INSTANCE_RENDERING_ERROR; } if (WXEnvironment.isApkDebugable()) { mLodBuilder.append("[WXBridgeManager] callUpdateAttrs >>>> instanceId:").append(instanceId) - .append(", ref:").append(ref) - .append(", task:").append(task) - .append(", callback:").append(callback); + .append(", ref:").append(ref) + .append(", task:").append(task) + .append(", callback:").append(callback); WXLogUtils.d(mLodBuilder.substring(0)); mLodBuilder.setLength(0); } - if(mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) { + if (mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) { return IWXBridge.DESTROY_INSTANCE; } @@ -678,7 +666,7 @@ public class WXBridgeManager implements Callback,BactchExecutor { parseNanos = System.nanoTime() - parseNanos; Action action = Actions.getUpdateAttrs(ref, domObject); - domModule.postAction((DOMAction)action, false); + domModule.postAction((DOMAction) action, false); if (WXTracing.isAvailable() && action instanceof TraceableAction) { ((TraceableAction) action).mStartMillis = start; @@ -688,7 +676,7 @@ public class WXBridgeManager implements Callback,BactchExecutor { } } catch (Exception e) { WXLogUtils.e("[WXBridgeManager] callUpdateAttrs exception: ", e); - commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_DOM_UPDATEATTRS,"[WXBridgeManager] callUpdateAttrs exception " + e.getCause()); + commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_DOM_UPDATEATTRS, "[WXBridgeManager] callUpdateAttrs exception " + e.getCause()); } if (UNDEFINED.equals(callback) || NON_CALLBACK.equals(callback)) { @@ -703,22 +691,20 @@ public class WXBridgeManager implements Callback,BactchExecutor { // callUpdateStyle public int callUpdateStyle(String instanceId, String ref, String task, String callback) { if (TextUtils.isEmpty(task)) { - if (WXEnvironment.isApkDebugable()) { - WXLogUtils.e("[WXBridgeManager] callUpdateStyle: call UpdateStyle tasks is null"); - } - commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_DOM_UPDATESTYLE,"[WXBridgeManager] callUpdateStyle: call UpdateStyle tasks is null"); + WXLogUtils.e("[WXBridgeManager] callUpdateStyle: call UpdateStyle tasks is null"); + commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_DOM_UPDATESTYLE, "[WXBridgeManager] callUpdateStyle: call UpdateStyle tasks is null"); return IWXBridge.INSTANCE_RENDERING_ERROR; } -// if (WXEnvironment.isApkDebugable()) { - mLodBuilder.append("[WXBridgeManager] callUpdateStyle >>>> instanceId:").append(instanceId) - .append(", ref:").append(ref) - .append(", task:").append(task) - .append(", callback:").append(callback); - WXLogUtils.d(mLodBuilder.substring(0)); - mLodBuilder.setLength(0); -// } + if (WXEnvironment.isApkDebugable()) { + mLodBuilder.append("[WXBridgeManager] callUpdateStyle >>>> instanceId:").append(instanceId) + .append(", ref:").append(ref) + .append(", task:").append(task) + .append(", callback:").append(callback); + WXLogUtils.d(mLodBuilder.substring(0)); + mLodBuilder.setLength(0); + } - if(mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) { + if (mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) { return IWXBridge.DESTROY_INSTANCE; } @@ -731,7 +717,7 @@ public class WXBridgeManager implements Callback,BactchExecutor { nanosTemp = System.nanoTime() - nanosTemp; Action action = Actions.getUpdateStyle(ref, domObject, false); - domModule.postAction((DOMAction)action, false); + domModule.postAction((DOMAction) action, false); if (WXTracing.isAvailable() && action instanceof TraceableAction) { ((TraceableAction) action).mParseJsonNanos = nanosTemp; @@ -741,7 +727,7 @@ public class WXBridgeManager implements Callback,BactchExecutor { } } catch (Exception e) { WXLogUtils.e("[WXBridgeManager] callUpdateStyle exception: ", e); - commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_DOM_UPDATESTYLE,"[WXBridgeManager] callUpdateStyle exception " + e.getCause()); + commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_DOM_UPDATESTYLE, "[WXBridgeManager] callUpdateStyle exception " + e.getCause()); } if (UNDEFINED.equals(callback) || NON_CALLBACK.equals(callback)) { @@ -757,12 +743,12 @@ public class WXBridgeManager implements Callback,BactchExecutor { if (WXEnvironment.isApkDebugable()) { mLodBuilder.append("[WXBridgeManager] callRemoveElement >>>> instanceId:").append(instanceId) - .append(", ref:").append(ref); + .append(", ref:").append(ref); WXLogUtils.d(mLodBuilder.substring(0)); mLodBuilder.setLength(0); } - if(mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) { + if (mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) { return IWXBridge.DESTROY_INSTANCE; } @@ -770,7 +756,7 @@ public class WXBridgeManager implements Callback,BactchExecutor { if (WXSDKManager.getInstance().getSDKInstance(instanceId) != null) { WXDomModule domModule = getDomModule(instanceId); Action action = Actions.getRemoveElement(ref); - domModule.postAction((DOMAction)action, false); + domModule.postAction((DOMAction) action, false); if (WXTracing.isAvailable() && action instanceof TraceableAction) { ((TraceableAction) action).onStartDomExecute(instanceId, "removeElement", ref, null, ref); @@ -778,7 +764,7 @@ public class WXBridgeManager implements Callback,BactchExecutor { } } catch (Exception e) { WXLogUtils.e("[WXBridgeManager] callRemoveElement exception: ", e); - commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_DOM_REMOVEELEMENT,"[WXBridgeManager] callRemoveElement exception " + e.getCause()); + commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_DOM_REMOVEELEMENT, "[WXBridgeManager] callRemoveElement exception " + e.getCause()); } if (UNDEFINED.equals(callback) || NON_CALLBACK.equals(callback)) { @@ -794,14 +780,14 @@ public class WXBridgeManager implements Callback,BactchExecutor { if (WXEnvironment.isApkDebugable()) { mLodBuilder.append("[WXBridgeManager] callMoveElement >>>> instanceId:").append(instanceId) - .append(", parentref:").append(parentref) - .append(", index:").append(index) - .append(", ref:").append(ref); + .append(", parentref:").append(parentref) + .append(", index:").append(index) + .append(", ref:").append(ref); WXLogUtils.d(mLodBuilder.substring(0)); mLodBuilder.setLength(0); } - if(mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) { + if (mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) { return IWXBridge.DESTROY_INSTANCE; } @@ -809,11 +795,11 @@ public class WXBridgeManager implements Callback,BactchExecutor { if (WXSDKManager.getInstance().getSDKInstance(instanceId) != null) { WXDomModule domModule = getDomModule(instanceId); Action action = Actions.getMoveElement(ref, parentref, Integer.parseInt(index)); - domModule.postAction((DOMAction)action, false); + domModule.postAction((DOMAction) action, false); } } catch (Exception e) { WXLogUtils.e("[WXBridgeManager] callMoveElement exception: ", e); - commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_DOM_MOVEELEMENT,"[WXBridgeManager] callMoveElement exception " + e.getCause()); + commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_DOM_MOVEELEMENT, "[WXBridgeManager] callMoveElement exception " + e.getCause()); } if (UNDEFINED.equals(callback) || NON_CALLBACK.equals(callback)) { @@ -827,14 +813,14 @@ public class WXBridgeManager implements Callback,BactchExecutor { public int callAddEvent(String instanceId, String ref, String event, String callback) { // if (WXEnvironment.isApkDebugable()) { - mLodBuilder.append("[WXBridgeManager] callAddEvent >>>> instanceId:").append(instanceId) - .append(", ref:").append(ref) - .append(", event:").append(event); - WXLogUtils.d(mLodBuilder.substring(0)); - mLodBuilder.setLength(0); + mLodBuilder.append("[WXBridgeManager] callAddEvent >>>> instanceId:").append(instanceId) + .append(", ref:").append(ref) + .append(", event:").append(event); + WXLogUtils.d(mLodBuilder.substring(0)); + mLodBuilder.setLength(0); // } - if(mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) { + if (mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) { return IWXBridge.DESTROY_INSTANCE; } @@ -842,7 +828,7 @@ public class WXBridgeManager implements Callback,BactchExecutor { if (WXSDKManager.getInstance().getSDKInstance(instanceId) != null) { WXDomModule domModule = getDomModule(instanceId); Action action = Actions.getAddEvent(ref, event); - domModule.postAction((DOMAction)action, false); + domModule.postAction((DOMAction) action, false); if (WXTracing.isAvailable() && action instanceof TraceableAction) { ((TraceableAction) action).onStartDomExecute(instanceId, "addEvent", ref, null, event); @@ -850,7 +836,7 @@ public class WXBridgeManager implements Callback,BactchExecutor { } } catch (Exception e) { WXLogUtils.e("[WXBridgeManager] callAddEvent exception: ", e); - commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_DOM_ADDEVENT,"[WXBridgeManager] callAddEvent exception " + e.getCause()); + commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_DOM_ADDEVENT, "[WXBridgeManager] callAddEvent exception " + e.getCause()); } if (UNDEFINED.equals(callback) || NON_CALLBACK.equals(callback)) { @@ -865,21 +851,21 @@ public class WXBridgeManager implements Callback,BactchExecutor { if (WXEnvironment.isApkDebugable()) { mLodBuilder.append("[WXBridgeManager] callRemoveEvent >>>> instanceId:").append(instanceId) - .append(", ref:").append(ref) - .append(", event:").append(event); + .append(", ref:").append(ref) + .append(", event:").append(event); WXLogUtils.d(mLodBuilder.substring(0)); mLodBuilder.setLength(0); } - if(mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) { - return IWXBridge .DESTROY_INSTANCE; + if (mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) { + return IWXBridge.DESTROY_INSTANCE; } try { if (WXSDKManager.getInstance().getSDKInstance(instanceId) != null) { WXDomModule domModule = getDomModule(instanceId); Action action = Actions.getRemoveEvent(ref, event); - domModule.postAction((DOMAction)action, false); + domModule.postAction((DOMAction) action, false); if (WXTracing.isAvailable() && action instanceof TraceableAction) { ((TraceableAction) action).onStartDomExecute(instanceId, "removeEvent", ref, null, event); @@ -887,7 +873,7 @@ public class WXBridgeManager implements Callback,BactchExecutor { } } catch (Exception e) { WXLogUtils.e("[WXBridgeManager] callRemoveEvent exception: ", e); - commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_DOM_REMOVEEVENT,"[WXBridgeManager] callRemoveEvent exception " + e.getCause()); + commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_DOM_REMOVEEVENT, "[WXBridgeManager] callRemoveEvent exception " + e.getCause()); } if (UNDEFINED.equals(callback) || NON_CALLBACK.equals(callback)) { @@ -898,16 +884,16 @@ public class WXBridgeManager implements Callback,BactchExecutor { return IWXBridge.INSTANCE_RENDERING; } - public int callAddElement(String instanceId, String ref,String dom,String index, String callback){ + public int callAddElement(String instanceId, String ref, String dom, String index, String callback) { if (WXEnvironment.isApkDebugable()) { mLodBuilder.append("[WXBridgeManager] callNative::callAddElement >>>> instanceId:").append(instanceId) - .append(", ref:").append(ref).append(", dom:").append(dom).append(", callback:").append(callback); + .append(", ref:").append(ref).append(", dom:").append(dom).append(", callback:").append(callback); WXLogUtils.d(mLodBuilder.substring(0)); mLodBuilder.setLength(0); } - if(mDestroyedInstanceId!=null && mDestroyedInstanceId.contains(instanceId)){ + if (mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) { return IWXBridge.DESTROY_INSTANCE; } @@ -922,7 +908,7 @@ public class WXBridgeManager implements Callback,BactchExecutor { WXSDKManager.getInstance().getSDKInstance(instanceId).jsonParseTime(System.currentTimeMillis() - start); } WXDomModule domModule = getDomModule(instanceId); - DOMAction addElementAction = Actions.getAddElement(domObject, ref,Integer.parseInt(index)); + DOMAction addElementAction = Actions.getAddElement(domObject, ref, Integer.parseInt(index)); domModule.postAction(addElementAction, false); if (WXTracing.isAvailable() && addElementAction instanceof TraceableAction) { @@ -942,57 +928,57 @@ public class WXBridgeManager implements Callback,BactchExecutor { } public int callReportCrashReloadPage(String instanceId, String crashFile) { + try { + String url = null; + WXSDKInstance instance = WXSDKManager.getInstance().getSDKInstance(instanceId); + if (instance != null) { + url = instance.getBundleUrl(); + } try { - String url = null; - WXSDKInstance instance = WXSDKManager.getInstance().getSDKInstance(instanceId); - if (instance != null) { - url = instance.getBundleUrl(); - } - try { - if (WXEnvironment.getApplication() != null) { - crashFile = WXEnvironment.getApplication().getApplicationContext().getCacheDir().getPath() + crashFile; - // Log.e("jsengine", "callReportCrashReloadPage crashFile:" + crashFile); - } - } catch (Throwable e) { - e.printStackTrace(); + if (WXEnvironment.getApplication() != null) { + crashFile = WXEnvironment.getApplication().getApplicationContext().getCacheDir().getPath() + crashFile; + // Log.e("jsengine", "callReportCrashReloadPage crashFile:" + crashFile); } - callReportCrash(crashFile, instanceId, url); - if (reInitCount > CRASHREINIT) { - return IWXBridge.INSTANCE_RENDERING_ERROR; - } - reInitCount++; - // reinit frame work - mInit = false; - initScriptsFramework(""); - - if (mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) { - return IWXBridge.DESTROY_INSTANCE; - } - } catch (Exception e) { - WXLogUtils.e("[WXBridgeManager] callReportCrashReloadPage exception: ", e); + } catch (Throwable e) { + e.printStackTrace(); } - try { + callReportCrash(crashFile, instanceId, url); + if (reInitCount > CRASHREINIT) { + return IWXBridge.INSTANCE_RENDERING_ERROR; + } + reInitCount++; + // reinit frame work + mInit = false; + initScriptsFramework(""); - if (WXSDKManager.getInstance().getSDKInstance(instanceId) != null) { - boolean reloadThisInstance = shouReloadCurrentInstance( - WXSDKManager.getInstance().getSDKInstance(instanceId).getBundleUrl()); - WXDomModule domModule = getDomModule(instanceId); - Action action = Actions.getReloadPage(instanceId, reloadThisInstance); - domModule.postAction((DOMAction) action, true); - } + if (mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) { + return IWXBridge.DESTROY_INSTANCE; + } + } catch (Exception e) { + WXLogUtils.e("[WXBridgeManager] callReportCrashReloadPage exception: ", e); + } + try { - } catch (Exception e) { - WXLogUtils.e("[WXBridgeManager] callReloadPage exception: ", e); - commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_RELOAD_PAGE,"[WXBridgeManager] callReloadPage exception "+e.getCause()); + if (WXSDKManager.getInstance().getSDKInstance(instanceId) != null) { + boolean reloadThisInstance = shouReloadCurrentInstance( + WXSDKManager.getInstance().getSDKInstance(instanceId).getBundleUrl()); + WXDomModule domModule = getDomModule(instanceId); + Action action = Actions.getReloadPage(instanceId, reloadThisInstance); + domModule.postAction((DOMAction) action, true); } - return IWXBridge.INSTANCE_RENDERING_ERROR; + + } catch (Exception e) { + WXLogUtils.e("[WXBridgeManager] callReloadPage exception: ", e); + commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_RELOAD_PAGE, "[WXBridgeManager] callReloadPage exception " + e.getCause()); + } + return IWXBridge.INSTANCE_RENDERING_ERROR; } public boolean shouReloadCurrentInstance(String aUrl) { long time = System.currentTimeMillis(); if (crashUrl == null || - (crashUrl != null && !crashUrl.equals(aUrl)) || - ((time - lastCrashTime) > 15000)) { + (crashUrl != null && !crashUrl.equals(aUrl)) || + ((time - lastCrashTime) > 15000)) { crashUrl = aUrl; lastCrashTime = time; return true; @@ -1002,49 +988,49 @@ public class WXBridgeManager implements Callback,BactchExecutor { } public void callReportCrash(String crashFile, final String instanceId, final String url) { - // statistic weexjsc process crash - Date date = new Date(); - DateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); - String time = format.format(date); - final String origin_filename = crashFile + "." + time; - File oldfile = new File(crashFile); - File newfile = new File(origin_filename); - if (oldfile.exists()) { - oldfile.renameTo(newfile); - } - Thread t = new Thread(new Runnable() { - public void run() { + // statistic weexjsc process crash + Date date = new Date(); + DateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); + String time = format.format(date); + final String origin_filename = crashFile + "." + time; + File oldfile = new File(crashFile); + File newfile = new File(origin_filename); + if (oldfile.exists()) { + oldfile.renameTo(newfile); + } + Thread t = new Thread(new Runnable() { + public void run() { + try { + File file = new File(origin_filename); + if (file.exists()) { + if (file.length() > 0) { + StringBuilder result = new StringBuilder(); try { - File file = new File(origin_filename); - if (file.exists()) { - if (file.length() > 0) { - StringBuilder result = new StringBuilder(); - try{ - BufferedReader br = new BufferedReader(new FileReader(origin_filename)); - String s = null; - // boolean foundStart = false; - while((s = br.readLine()) != null) { - if ("".equals(s)) { - continue; - } - // å¯åå¨å 容è£åª - // if (("r0:").equals(s)) { - // break; - // } - result.append(s + "\n"); - } - commitJscCrashAlarmMonitor(IWXUserTrackAdapter.JS_BRIDGE, WXErrorCode.WX_ERR_JSC_CRASH, result.toString(), instanceId, url); - br.close(); - } catch(Exception e) { - e.printStackTrace(); - } - } else { - WXLogUtils.e("[WXBridgeManager] callReportCrash crash file is empty"); - // 没æ¶éå°crashå æ ä¸ä¸ä¼ - // commitJscCrashAlarmMonitor(IWXUserTrackAdapter.JS_BRIDGE, WXErrorCode.WX_ERR_JSC_CRASH, "crash info file empty", instanceId, url); + BufferedReader br = new BufferedReader(new FileReader(origin_filename)); + String s = null; + // boolean foundStart = false; + while ((s = br.readLine()) != null) { + if ("".equals(s)) { + continue; } - file.delete(); + // å¯åå¨å 容è£åª + // if (("r0:").equals(s)) { + // break; + // } + result.append(s + "\n"); } + commitJscCrashAlarmMonitor(IWXUserTrackAdapter.JS_BRIDGE, WXErrorCode.WX_ERR_JSC_CRASH, result.toString(), instanceId, url); + br.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } else { + WXLogUtils.e("[WXBridgeManager] callReportCrash crash file is empty"); + // 没æ¶éå°crashå æ ä¸ä¸ä¼ + // commitJscCrashAlarmMonitor(IWXUserTrackAdapter.JS_BRIDGE, WXErrorCode.WX_ERR_JSC_CRASH, "crash info file empty", instanceId, url); + } + file.delete(); + } // Log.e("reportServerCrash", "WXBridge reportServerCrash crashFile:" + origin_filename); // String filename = CRASHPATH; // File oldfile = new File(origin_filename); @@ -1071,17 +1057,17 @@ public class WXBridgeManager implements Callback,BactchExecutor { // } else { // Log.e("reportServerCrash", "WXBridge /data/data/com.taobao.taobao/app_tombstone/com.taobao.taobao/crashsdk/logs not exsist"); // } - } catch (Throwable throwable) { - WXLogUtils.e("[WXBridgeManager] callReportCrash exception: ", throwable); - } - } - }); - t.start(); + } catch (Throwable throwable) { + WXLogUtils.e("[WXBridgeManager] callReportCrash exception: ", throwable); + } + } + }); + t.start(); } private void getNextTick(final String instanceId, final String callback) { - addJSTask(METHOD_CALLBACK,instanceId, callback, "{}"); + addJSTask(METHOD_CALLBACK, instanceId, callback, "{}"); sendMessage(instanceId, WXJSBridgeMsgType.CALL_JS_BATCH); } @@ -1096,12 +1082,12 @@ public class WXBridgeManager implements Callback,BactchExecutor { ArrayList<Object> argsList = new ArrayList<>(); for (Object arg : args) { - argsList.add(arg); + argsList.add(arg); } - if(params != null){ - ArrayMap map = new ArrayMap(4); - map.put(KEY_PARAMS, params); - argsList.add(map); + if (params != null) { + ArrayMap map = new ArrayMap(4); + map.put(KEY_PARAMS, params); + argsList.add(map); } WXHashMap<String, Object> task = new WXHashMap<>(); @@ -1133,6 +1119,7 @@ public class WXBridgeManager implements Callback,BactchExecutor { /** * Initialize JavaScript framework + * * @param framework String representation of the framework to be init. */ public synchronized void initScriptsFramework(String framework) { @@ -1145,12 +1132,13 @@ public class WXBridgeManager implements Callback,BactchExecutor { @Deprecated public void fireEvent(final String instanceId, final String ref, - final String type, final Map<String, Object> data){ + final String type, final Map<String, Object> data) { this.fireEvent(instanceId, ref, type, data, null); } /** * Do not direct invoke this method in Components, use {@link WXSDKInstance#fireEvent(String, String, Map, Map)} instead. + * * @param instanceId * @param ref * @param type @@ -1159,16 +1147,16 @@ public class WXBridgeManager implements Callback,BactchExecutor { */ @Deprecated public void fireEvent(final String instanceId, final String ref, - final String type, final Map<String, Object> data,final Map<String, Object> domChanges) { - fireEventOnNode(instanceId,ref,type,data,domChanges); + final String type, final Map<String, Object> data, final Map<String, Object> domChanges) { + fireEventOnNode(instanceId, ref, type, data, domChanges); } /** * Notify the JavaScript about the event happened on Android */ public void fireEventOnNode(final String instanceId, final String ref, - final String type, final Map<String, Object> data,final Map<String, Object> domChanges) { - fireEventOnNode(instanceId, ref, type, data, domChanges, null); + final String type, final Map<String, Object> data, final Map<String, Object> domChanges) { + fireEventOnNode(instanceId, ref, type, data, domChanges, null); } /** @@ -1178,12 +1166,12 @@ public class WXBridgeManager implements Callback,BactchExecutor { final String type, final Map<String, Object> data, final Map<String, Object> domChanges, List<Object> params) { if (TextUtils.isEmpty(instanceId) || TextUtils.isEmpty(ref) - || TextUtils.isEmpty(type) || mJSHandler == null) { + || TextUtils.isEmpty(type) || mJSHandler == null) { return; } if (!checkMainThread()) { throw new WXRuntimeException( - "fireEvent must be called by main thread"); + "fireEvent must be called by main thread"); } addJSEventTask(METHOD_FIRE_EVENT, instanceId, params, ref, type, data, domChanges); sendMessage(instanceId, WXJSBridgeMsgType.CALL_JS_BATCH); @@ -1196,11 +1184,12 @@ public class WXBridgeManager implements Callback,BactchExecutor { /** * Invoke JavaScript callback. Use {@link JSCallback} instead. + * * @see #callback(String, String, String) */ @Deprecated - public void callback(String instanceId, String callback,String data) { - callback(instanceId, callback,data,false); + public void callback(String instanceId, String callback, String data) { + callback(instanceId, callback, data, false); } /** @@ -1208,29 +1197,31 @@ public class WXBridgeManager implements Callback,BactchExecutor { */ @Deprecated public void callback(final String instanceId, final String callback, - final Map<String, Object> data){ - callback(instanceId,callback,data,false); + final Map<String, Object> data) { + callback(instanceId, callback, data, false); } /** * Use {@link JSCallback} instead. + * * @param instanceId Weex Instance Id - * @param callback callback referenece handle - * @param data callback data - * @param keepAlive if keep callback instance alive for later use - */ + * @param callback callback referenece handle + * @param data callback data + * @param keepAlive if keep callback instance alive for later use + */ @Deprecated public void callback(final String instanceId, final String callback, - final Object data,boolean keepAlive) { - callbackJavascript(instanceId,callback,data,keepAlive); + final Object data, boolean keepAlive) { + callbackJavascript(instanceId, callback, data, keepAlive); } /** * Callback to Javascript function. + * * @param instanceId Weex Instance Id - * @param callback callback referenece handle - * @param data callback data - * @param keepAlive if keep callback instance alive for later use + * @param callback callback referenece handle + * @param data callback data + * @param keepAlive if keep callback instance alive for later use */ void callbackJavascript(final String instanceId, final String callback, final Object data, boolean keepAlive) { @@ -1239,7 +1230,7 @@ public class WXBridgeManager implements Callback,BactchExecutor { return; } - addJSTask(METHOD_CALLBACK, instanceId, callback, data,keepAlive); + addJSTask(METHOD_CALLBACK, instanceId, callback, data, keepAlive); sendMessage(instanceId, WXJSBridgeMsgType.CALL_JS_BATCH); } @@ -1264,32 +1255,32 @@ public class WXBridgeManager implements Callback,BactchExecutor { WXSDKInstance instance = WXSDKManager.getInstance().getSDKInstance(instanceId); if (instance != null) { instance.onRenderError(WXRenderErrorCode.WX_CREATE_INSTANCE_ERROR, - "createInstance failed!"); + "createInstance failed!"); } String err = "[WXBridgeManager] invokeRefreshInstance: framework.js uninitialized."; - commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_INVOKE_NATIVE,err); + commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_INVOKE_NATIVE, err); WXLogUtils.d(err); return; } long start = System.currentTimeMillis(); if (WXEnvironment.isApkDebugable()) { WXLogUtils.d("refreshInstance >>>> instanceId:" + instanceId - + ", data:" + refreshData.data + ", isDirty:" + refreshData.isDirty); + + ", data:" + refreshData.data + ", isDirty:" + refreshData.isDirty); } if (refreshData.isDirty) { return; } WXJSObject instanceIdObj = new WXJSObject(WXJSObject.String, - instanceId); + instanceId); WXJSObject dataObj = new WXJSObject(WXJSObject.JSON, - refreshData.data == null ? "{}" : refreshData.data); + refreshData.data == null ? "{}" : refreshData.data); WXJSObject[] args = {instanceIdObj, dataObj}; invokeExecJS(instanceId, null, METHOD_REFRESH_INSTANCE, args); WXLogUtils.renderPerformanceLog("invokeRefreshInstance", System.currentTimeMillis() - start); } catch (Throwable e) { String err = "[WXBridgeManager] invokeRefreshInstance " + e.getCause(); - commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_INVOKE_NATIVE,err); + commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_INVOKE_NATIVE, err); WXLogUtils.e(err); } } @@ -1309,11 +1300,11 @@ public class WXBridgeManager implements Callback,BactchExecutor { return; } WXPerformance performance = new WXPerformance(); - performance.args=instance.getBundleUrl(); - performance.errCode=errCode.getErrorCode(); + performance.args = instance.getBundleUrl(); + performance.errCode = errCode.getErrorCode(); if (errCode != WXErrorCode.WX_SUCCESS) { - performance.appendErrMsg(TextUtils.isEmpty(errMsg)?errCode.getErrorMsg():errMsg); - WXLogUtils.e("wx_monitor",performance.toString()); + performance.appendErrMsg(TextUtils.isEmpty(errMsg) ? errCode.getErrorMsg() : errMsg); + WXLogUtils.e("wx_monitor", performance.toString()); } adapter.commit(WXEnvironment.getApplication(), null, IWXUserTrackAdapter.JS_BRIDGE, performance, instance.getUserTrackParams()); } @@ -1335,8 +1326,8 @@ public class WXBridgeManager implements Callback,BactchExecutor { WXPerformance performance = new WXPerformance(); performance.errCode = errorCode.getErrorCode(); if (errorCode != WXErrorCode.WX_SUCCESS) { - performance.appendErrMsg(TextUtils.isEmpty(errMsg)?errorCode.getErrorMsg():errMsg); - WXLogUtils.e("wx_monitor",performance.toString()); + performance.appendErrMsg(TextUtils.isEmpty(errMsg) ? errorCode.getErrorMsg() : errMsg); + WXLogUtils.e("wx_monitor", performance.toString()); } userTrackAdapter.commit(WXEnvironment.getApplication(), null, type, performance, null); } @@ -1350,15 +1341,15 @@ public class WXBridgeManager implements Callback,BactchExecutor { String method = "callReportCrash"; String exception = "weexjsc process crash and restart exception"; - Map<String,String> extParams = new HashMap<String, String>(); + Map<String, String> extParams = new HashMap<String, String>(); extParams.put("jscCrashStack", errMsg); IWXJSExceptionAdapter adapter = WXSDKManager.getInstance().getIWXJSExceptionAdapter(); if (adapter != null) { - WXJSExceptionInfo jsException = new WXJSExceptionInfo(instanceId, url, errorCode.getErrorCode(), method, exception, extParams); - adapter.onJSException(jsException); - // if (WXEnvironment.isApkDebugable()) { - WXLogUtils.e(jsException.toString()); - // } + WXJSExceptionInfo jsException = new WXJSExceptionInfo(instanceId, url, errorCode.getErrorCode(), method, exception, extParams); + adapter.onJSException(jsException); + // if (WXEnvironment.isApkDebugable()) { + WXLogUtils.e(jsException.toString()); + // } } } @@ -1368,11 +1359,11 @@ public class WXBridgeManager implements Callback,BactchExecutor { public void createInstance(final String instanceId, final String template, final Map<String, Object> options, final String data) { final WXSDKInstance instance = WXSDKManager.getInstance().getSDKInstance(instanceId); - if(instance == null){ - WXLogUtils.e("WXBridgeManager","createInstance failed, SDKInstance is not exist"); + if (instance == null) { + WXLogUtils.e("WXBridgeManager", "createInstance failed, SDKInstance is not exist"); return; } - if ( TextUtils.isEmpty(instanceId) + if (TextUtils.isEmpty(instanceId) || TextUtils.isEmpty(template) || mJSHandler == null) { instance.onRenderError(WXRenderErrorCode.WX_CREATE_INSTANCE_ERROR, "createInstance fail!"); return; @@ -1401,7 +1392,7 @@ public class WXBridgeManager implements Callback,BactchExecutor { @Override public void run() { - instance.createInstanceFinished(totalTime); + instance.createInstanceFinished(totalTime); } }, 0); } @@ -1418,37 +1409,37 @@ public class WXBridgeManager implements Callback,BactchExecutor { } else { if (!isJSFrameworkInit()) { instance.onRenderError(WXRenderErrorCode.WX_CREATE_INSTANCE_ERROR, "createInstance " - + "fail!"); + + "fail!"); String err = "[WXBridgeManager] invokeCreateInstance: framework.js uninitialized."; - commitJSBridgeAlarmMonitor(instance.getInstanceId(), WXErrorCode.WX_ERR_INVOKE_NATIVE,err); + commitJSBridgeAlarmMonitor(instance.getInstanceId(), WXErrorCode.WX_ERR_INVOKE_NATIVE, err); WXLogUtils.e(err); return; } try { if (WXEnvironment.isApkDebugable()) { WXLogUtils.d("createInstance >>>> instanceId:" + instance.getInstanceId() - + ", options:" - + WXJsonUtils.fromObjectToJSONString(options) - + ", data:" + data); + + ", options:" + + WXJsonUtils.fromObjectToJSONString(options) + + ", data:" + data); } WXJSObject instanceIdObj = new WXJSObject(WXJSObject.String, - instance.getInstanceId()); + instance.getInstanceId()); WXJSObject instanceObj = new WXJSObject(WXJSObject.String, - template); + template); WXJSObject optionsObj = new WXJSObject(WXJSObject.JSON, - options == null ? "{}" - : WXJsonUtils.fromObjectToJSONString(options)); + options == null ? "{}" + : WXJsonUtils.fromObjectToJSONString(options)); WXJSObject dataObj = new WXJSObject(WXJSObject.JSON, - data == null ? "{}" : data); + data == null ? "{}" : data); WXJSObject[] args = {instanceIdObj, instanceObj, optionsObj, - dataObj}; - invokeExecJS(instance.getInstanceId(), null, METHOD_CREATE_INSTANCE, args,false); + dataObj}; + invokeExecJS(instance.getInstanceId(), null, METHOD_CREATE_INSTANCE, args, false); } catch (Throwable e) { instance.onRenderError(WXRenderErrorCode.WX_CREATE_INSTANCE_ERROR, - "createInstance failed!"); + "createInstance failed!"); String err = "[WXBridgeManager] invokeCreateInstance " + e.getCause() - + " template md5 " + WXFileUtils.md5(template) + " length " + (template == null ? 0 : template.length()); - commitJSBridgeAlarmMonitor(instance.getInstanceId(), WXErrorCode.WX_ERR_INVOKE_NATIVE,err); + + " template md5 " + WXFileUtils.md5(template) + " length " + (template == null ? 0 : template.length()); + commitJSBridgeAlarmMonitor(instance.getInstanceId(), WXErrorCode.WX_ERR_INVOKE_NATIVE, err); WXLogUtils.e(err); } } @@ -1459,11 +1450,11 @@ public class WXBridgeManager implements Callback,BactchExecutor { } public void destroyInstance(final String instanceId) { - if ( mJSHandler == null + if (mJSHandler == null || TextUtils.isEmpty(instanceId)) { return; } - if(mDestroyedInstanceId!=null) { + if (mDestroyedInstanceId != null) { mDestroyedInstanceId.add(instanceId); } // clear message with instanceId @@ -1487,12 +1478,12 @@ public class WXBridgeManager implements Callback,BactchExecutor { WXLogUtils.d("destroyInstance >>>> instanceId:" + instanceId); } WXJSObject instanceIdObj = new WXJSObject(WXJSObject.String, - instanceId); + instanceId); WXJSObject[] args = {instanceIdObj}; invokeExecJS(instanceId, null, METHOD_DESTROY_INSTANCE, args); } catch (Throwable e) { String err = "[WXBridgeManager] invokeDestroyInstance " + e.getCause(); - commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_INVOKE_NATIVE,err); + commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_INVOKE_NATIVE, err); WXLogUtils.e(err); } } @@ -1513,7 +1504,7 @@ public class WXBridgeManager implements Callback,BactchExecutor { break; case WXJSBridgeMsgType.SET_TIMEOUT: TimerInfo timerInfo = (TimerInfo) msg.obj; - if(timerInfo == null){ + if (timerInfo == null) { break; } WXJSObject obj = new WXJSObject(WXJSObject.String, timerInfo.callbackId); @@ -1537,14 +1528,14 @@ public class WXBridgeManager implements Callback,BactchExecutor { } public void invokeExecJS(String instanceId, String namespace, String function, - WXJSObject[] args,boolean logTaskDetail){ + WXJSObject[] args, boolean logTaskDetail) { // if (WXEnvironment.isApkDebugable()) { - mLodBuilder.append("callJS >>>> instanceId:").append(instanceId) - .append("function:").append(function); - if(logTaskDetail) - mLodBuilder.append(" tasks:").append(WXJsonUtils.fromObjectToJSONString(args)); - WXLogUtils.d(mLodBuilder.substring(0)); - mLodBuilder.setLength(0); + mLodBuilder.append("callJS >>>> instanceId:").append(instanceId) + .append("function:").append(function); + if (logTaskDetail) + mLodBuilder.append(" tasks:").append(WXJsonUtils.fromObjectToJSONString(args)); + WXLogUtils.d(mLodBuilder.substring(0)); + mLodBuilder.setLength(0); // } mWXBridge.execJS(instanceId, namespace, function, args); } @@ -1555,16 +1546,16 @@ public class WXBridgeManager implements Callback,BactchExecutor { framework = (String) msg.obj; } - if(WXUtils.getAvailMemory(WXEnvironment.getApplication()) > LOW_MEM_VALUE) { + if (WXUtils.getAvailMemory(WXEnvironment.getApplication()) > LOW_MEM_VALUE) { initFramework(framework); } } - private void initFramework(String framework){ + private void initFramework(String framework) { if (!isJSFrameworkInit()) { if (TextUtils.isEmpty(framework)) { // if (WXEnvironment.isApkDebugable()) { - WXLogUtils.d("weex JS framework from assets"); + WXLogUtils.d("weex JS framework from assets"); // } framework = WXFileUtils.loadAsset("main.js", WXEnvironment.getApplication()); } @@ -1579,7 +1570,7 @@ public class WXBridgeManager implements Callback,BactchExecutor { } long start = System.currentTimeMillis(); - String crashFile=""; + String crashFile = ""; boolean installOnSdcard = false; try { crashFile = WXEnvironment.getApplication().getApplicationContext().getCacheDir().getPath(); @@ -1600,7 +1591,7 @@ public class WXBridgeManager implements Callback,BactchExecutor { } // extends initFramework - if(mWXBridge.initFrameworkEnv(framework, assembleDefaultOptions(), crashFile, installOnSdcard)==INIT_FRAMEWORK_OK){ + if (mWXBridge.initFrameworkEnv(framework, assembleDefaultOptions(), crashFile, installOnSdcard) == INIT_FRAMEWORK_OK) { WXEnvironment.sJSLibInitTime = System.currentTimeMillis() - start; WXLogUtils.renderPerformanceLog("initFramework", WXEnvironment.sJSLibInitTime); WXEnvironment.sSDKInitTime = System.currentTimeMillis() - WXEnvironment.sSDKInitStart; @@ -1619,25 +1610,25 @@ public class WXBridgeManager implements Callback,BactchExecutor { reinitInfo = "reinit Framework:"; } commitJSFrameworkAlarmMonitor(IWXUserTrackAdapter.JS_FRAMEWORK, WXErrorCode.WX_SUCCESS, reinitInfo + "success"); - }else{ + } else { if (reInitCount > 1) { WXLogUtils.e("[WXBridgeManager] invokeReInitFramework ExecuteJavaScript fail"); - String err="[WXBridgeManager] invokeReInitFramework ExecuteJavaScript fail reinit FrameWork"; + String err = "[WXBridgeManager] invokeReInitFramework ExecuteJavaScript fail reinit FrameWork"; commitJSFrameworkAlarmMonitor(IWXUserTrackAdapter.JS_FRAMEWORK, WXErrorCode.WX_ERR_JS_REINIT_FRAMEWORK, err); } else { WXLogUtils.e("[WXBridgeManager] invokeInitFramework ExecuteJavaScript fail"); - String err="[WXBridgeManager] invokeInitFramework ExecuteJavaScript fail"; + String err = "[WXBridgeManager] invokeInitFramework ExecuteJavaScript fail"; commitJSFrameworkAlarmMonitor(IWXUserTrackAdapter.JS_FRAMEWORK, WXErrorCode.WX_ERR_JS_FRAMEWORK, err); } } } catch (Throwable e) { if (reInitCount > 1) { WXLogUtils.e("[WXBridgeManager] invokeInitFramework ", e); - String err="[WXBridgeManager] invokeInitFramework reinit FrameWork exception!#"+e.toString(); + String err = "[WXBridgeManager] invokeInitFramework reinit FrameWork exception!#" + e.toString(); commitJSFrameworkAlarmMonitor(IWXUserTrackAdapter.JS_FRAMEWORK, WXErrorCode.WX_ERR_JS_REINIT_FRAMEWORK, err); } else { WXLogUtils.e("[WXBridgeManager] invokeInitFramework ", e); - String err="[WXBridgeManager] invokeInitFramework exception!#"+e.toString(); + String err = "[WXBridgeManager] invokeInitFramework exception!#" + e.toString(); commitJSFrameworkAlarmMonitor(IWXUserTrackAdapter.JS_FRAMEWORK, WXErrorCode.WX_ERR_JS_FRAMEWORK, err); } } @@ -1649,7 +1640,7 @@ public class WXBridgeManager implements Callback,BactchExecutor { private void invokeCallJSBatch(Message message) { if (mNextTickTasks.isEmpty() || !isJSFrameworkInit()) { if (!isJSFrameworkInit()) { - WXLogUtils.e("[WXBridgeManager] invokeCallJSBatch: framework.js uninitialized!! message:"+message.toString()); + WXLogUtils.e("[WXBridgeManager] invokeCallJSBatch: framework.js uninitialized!! message:" + message.toString()); } return; } @@ -1670,16 +1661,16 @@ public class WXBridgeManager implements Callback,BactchExecutor { task = ((ArrayList) task).toArray(); WXJSObject[] args = { - new WXJSObject(WXJSObject.String, instanceId), - new WXJSObject(WXJSObject.JSON, - WXJsonUtils.fromObjectToJSONString(task))}; + new WXJSObject(WXJSObject.String, instanceId), + new WXJSObject(WXJSObject.JSON, + WXJsonUtils.fromObjectToJSONString(task))}; invokeExecJS(String.valueOf(instanceId), null, METHOD_CALL_JS, args); } catch (Throwable e) { WXLogUtils.e("WXBridgeManager", e); - String err="invokeCallJSBatch#"+e.toString(); - commitJSBridgeAlarmMonitor(message.obj.toString(), WXErrorCode.WX_ERR_JS_EXECUTE,err); + String err = "invokeCallJSBatch#" + e.toString(); + commitJSBridgeAlarmMonitor(message.obj.toString(), WXErrorCode.WX_ERR_JS_EXECUTE, err); } // If task is not empty, loop until it is empty @@ -1751,16 +1742,16 @@ public class WXBridgeManager implements Callback,BactchExecutor { /** * Register Android module + * * @param modules the format is like * {'dom':['updateAttrs','updateStyle'],'event':['openUrl']} */ public void registerModules(final Map<String, Object> modules) { if (modules != null && modules.size() != 0) { - if(isJSThread()){ + if (isJSThread()) { invokeRegisterModules(modules, mRegisterModuleFailList); - } - else{ + } else { post(new Runnable() { @Override public void run() { @@ -1775,7 +1766,7 @@ public class WXBridgeManager implements Callback,BactchExecutor { * Registered component */ public void registerComponents(final List<Map<String, Object>> components) { - if ( mJSHandler == null || components == null + if (mJSHandler == null || components == null || components.size() == 0) { return; } @@ -1806,7 +1797,7 @@ public class WXBridgeManager implements Callback,BactchExecutor { mWXBridge.execJSService(service); } catch (Throwable e) { WXLogUtils.e("[WXBridgeManager] invokeRegisterService:", e); - commitJSFrameworkAlarmMonitor(IWXUserTrackAdapter.JS_FRAMEWORK,WXErrorCode.WX_ERR_JS_EXECUTE,"invokeRegisterService"); + commitJSFrameworkAlarmMonitor(IWXUserTrackAdapter.JS_FRAMEWORK, WXErrorCode.WX_ERR_JS_EXECUTE, "invokeRegisterService"); } } @@ -1824,38 +1815,38 @@ public class WXBridgeManager implements Callback,BactchExecutor { } WXJSObject[] args = {new WXJSObject(WXJSObject.JSON, - WXJsonUtils.fromObjectToJSONString(modules))}; + WXJsonUtils.fromObjectToJSONString(modules))}; try { mWXBridge.execJS("", null, METHOD_REGISTER_MODULES, args); } catch (Throwable e) { WXLogUtils.e("[WXBridgeManager] invokeRegisterModules:", e); - commitJSFrameworkAlarmMonitor(IWXUserTrackAdapter.JS_FRAMEWORK,WXErrorCode.WX_ERR_JS_EXECUTE,"invokeRegisterModules"); + commitJSFrameworkAlarmMonitor(IWXUserTrackAdapter.JS_FRAMEWORK, WXErrorCode.WX_ERR_JS_EXECUTE, "invokeRegisterModules"); } } private void invokeRegisterComponents(List<Map<String, Object>> components, List<Map<String, Object>> failReceiver) { - if(components == failReceiver){ + if (components == failReceiver) { throw new RuntimeException("Fail receiver should not use source."); } if (!isJSFrameworkInit()) { WXLogUtils.e("[WXBridgeManager] invokeRegisterComponents: framework.js uninitialized."); - for (Map<String,Object> comp:components){ + for (Map<String, Object> comp : components) { failReceiver.add(comp); } return; } - if(components == null){ + if (components == null) { return; } WXJSObject[] args = {new WXJSObject(WXJSObject.JSON, - WXJsonUtils.fromObjectToJSONString(components))}; + WXJsonUtils.fromObjectToJSONString(components))}; try { mWXBridge.execJS("", null, METHOD_REGISTER_COMPONENTS, args); } catch (Throwable e) { WXLogUtils.e("[WXBridgeManager] invokeRegisterComponents ", e); - commitJSFrameworkAlarmMonitor(IWXUserTrackAdapter.JS_FRAMEWORK,WXErrorCode.WX_ERR_JS_EXECUTE,"invokeRegisterComponents"); + commitJSFrameworkAlarmMonitor(IWXUserTrackAdapter.JS_FRAMEWORK, WXErrorCode.WX_ERR_JS_EXECUTE, "invokeRegisterComponents"); } } @@ -1864,7 +1855,7 @@ public class WXBridgeManager implements Callback,BactchExecutor { mJSThread.quit(); } mBridgeManager = null; - if(mDestroyedInstanceId!=null){ + if (mDestroyedInstanceId != null) { mDestroyedInstanceId.clear(); } @@ -1875,105 +1866,98 @@ public class WXBridgeManager implements Callback,BactchExecutor { */ public void reportJSException(String instanceId, String function, String exception) { - WXLogUtils.e("reportJSException >>>> instanceId:" + instanceId - + ", exception function:" + function + ", exception:" - + exception); - WXSDKInstance instance = null; - if (instanceId != null && (instance = WXSDKManager.getInstance().getSDKInstance(instanceId)) != null) { - instance.onJSException(WXErrorCode.WX_ERR_JS_EXECUTE.getErrorCode(), function, exception); - - if (METHOD_CREATE_INSTANCE.equals(function)) { - try { - if (reInitCount > 1 && !instance.isNeedReLoad()) { - // JSONObject domObject = JSON.parseObject(tasks); - WXDomModule domModule = getDomModule(instanceId); - Action action = Actions.getReloadPage(instanceId, true); - domModule.postAction((DOMAction) action, true); - instance.setNeedLoad(true); - return; - } - } catch (Exception e) { - e.printStackTrace(); - } + WXLogUtils.e("reportJSException >>>> instanceId:" + instanceId + + ", exception function:" + function + ", exception:" + + exception); + WXSDKInstance instance = null; + if (instanceId != null && (instance = WXSDKManager.getInstance().getSDKInstance(instanceId)) != null) { + instance.onJSException(WXErrorCode.WX_ERR_JS_EXECUTE.getErrorCode(), function, exception); + + if (METHOD_CREATE_INSTANCE.equals(function)) { + try { + if (reInitCount > 1 && !instance.isNeedReLoad()) { + // JSONObject domObject = JSON.parseObject(tasks); + WXDomModule domModule = getDomModule(instanceId); + Action action = Actions.getReloadPage(instanceId, true); + domModule.postAction((DOMAction) action, true); + instance.setNeedLoad(true); + return; } - String err = "function:" + function + "#exception:" + exception; - commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_JS_EXECUTE, err); + } catch (Exception e) { + e.printStackTrace(); + } } + String err = "function:" + function + "#exception:" + exception; + commitJSBridgeAlarmMonitor(instanceId, WXErrorCode.WX_ERR_JS_EXECUTE, err); + } - IWXJSExceptionAdapter adapter = WXSDKManager.getInstance().getIWXJSExceptionAdapter(); - if (adapter != null) { - String bundleUrl; - String exceptionId = instanceId; + IWXJSExceptionAdapter adapter = WXSDKManager.getInstance().getIWXJSExceptionAdapter(); + if (adapter != null) { + String bundleUrl; + String exceptionId = instanceId; - if (instanceId == "" || instanceId == null) { - exceptionId = "instanceIdisNull"; - } + if (instanceId == "" || instanceId == null) { + exceptionId = "instanceIdisNull"; + } - if (instance == null) { - if (("initFramework").equals(function)) { - bundleUrl = "jsExceptionBeforeRenderInstanceNull"; - String exceptionExt = null; - try { - if (WXEnvironment.getApplication() != null) { - final String fileName = WXEnvironment.getApplication().getApplicationContext().getCacheDir().getPath() + INITLOGFILE; - try { - File file = new File(fileName); - if (file.exists()) { - if (file.length() > 0) { - StringBuilder result = new StringBuilder(); - try { - InputStreamReader read = new InputStreamReader(new FileInputStream(file), "UTF-8"); - BufferedReader br = new BufferedReader(read); - String s = null; - while ((s = br.readLine()) != null) { - result.append(s + "\n"); - } - exceptionExt = result.toString(); - br.close(); - } catch (Exception e) { - e.printStackTrace(); - } - } - file.delete(); - } - } catch (Throwable throwable) { - - } + if (instance == null) { + if (("initFramework").equals(function)) { + bundleUrl = "jsExceptionBeforeRenderInstanceNull"; + String exceptionExt = null; + try { + if (WXEnvironment.getApplication() != null) { + final String fileName = WXEnvironment.getApplication().getApplicationContext().getCacheDir().getPath() + INITLOGFILE; + try { + File file = new File(fileName); + if (file.exists()) { + if (file.length() > 0) { + StringBuilder result = new StringBuilder(); + try { + InputStreamReader read = new InputStreamReader(new FileInputStream(file), "UTF-8"); + BufferedReader br = new BufferedReader(read); + String s = null; + while ((s = br.readLine()) != null) { + result.append(s + "\n"); } - } catch (Throwable e) { + exceptionExt = result.toString(); + br.close(); + } catch (Exception e) { e.printStackTrace(); + } } - exception += "\n" + exceptionExt; - WXLogUtils.e("reportJSException:" + exception); + file.delete(); + } + } catch (Throwable throwable) { - } else if (function == null) { - bundleUrl = "jsExceptionInstanceAndFunctionNull"; - } else { - bundleUrl = "jsExceptionInstanceNull" + function; } - } else { - bundleUrl = instance.getBundleUrl(); + } + } catch (Throwable e) { + e.printStackTrace(); } + exception += "\n" + exceptionExt; + WXLogUtils.e("reportJSException:" + exception); - WXJSExceptionInfo jsException = new WXJSExceptionInfo(exceptionId, bundleUrl, WXErrorCode.WX_ERR_JS_EXECUTE.getErrorCode(), function, exception, null); - adapter.onJSException(jsException); - if (WXEnvironment.isApkDebugable()) { - WXLogUtils.d(jsException.toString()); - } + } else if (function == null) { + bundleUrl = "jsExceptionInstanceAndFunctionNull"; + } else { + bundleUrl = "jsExceptionInstanceNull" + function; + } + } else { + bundleUrl = instance.getBundleUrl(); } - } - public static class TimerInfo { - - public String callbackId; - public long time; - public String instanceId; + WXJSExceptionInfo jsException = new WXJSExceptionInfo(exceptionId, bundleUrl, WXErrorCode.WX_ERR_JS_EXECUTE.getErrorCode(), function, exception, null); + adapter.onJSException(jsException); + if (WXEnvironment.isApkDebugable()) { + WXLogUtils.d(jsException.toString()); + } + } } private void registerDomModule() throws WXException { /** Tell Javascript Framework what methods you have. This is Required.**/ - Map<String,Object> domMap=new HashMap<>(); - domMap.put(WXDomModule.WXDOM,WXDomModule.METHODS); + Map<String, Object> domMap = new HashMap<>(); + domMap.put(WXDomModule.WXDOM, WXDomModule.METHODS); registerModules(domMap); } @@ -1999,7 +1983,7 @@ public class WXBridgeManager implements Callback,BactchExecutor { public void run() { if (!isJSFrameworkInit()) return; - + invokeExecJS("", null, METHOD_NOTIFY_SERIALIZE_CODE_CACHE, new WXJSObject[0]); } }); @@ -2013,4 +1997,11 @@ public class WXBridgeManager implements Callback,BactchExecutor { msg.sendToTarget(); } + public static class TimerInfo { + + public String callbackId; + public long time; + public String instanceId; + } + }