You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by gu...@apache.org on 2017/10/23 08:10:34 UTC
[06/18] incubator-weex git commit: * [android] modify
border-android.png
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/28dd9f3b/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 a949e3b..3f0b6e3 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
@@ -19,6 +19,9 @@
package com.taobao.weex.bridge;
import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.os.Build;
import android.os.Handler;
import android.os.Handler.Callback;
import android.os.Looper;
@@ -82,26 +85,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";
@@ -127,33 +130,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;
@@ -161,22 +159,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() {
@@ -196,6 +185,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;
@@ -212,7 +205,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();
}
@@ -240,36 +233,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);
}
/**
@@ -282,6 +275,7 @@ public class WXBridgeManager implements Callback,BactchExecutor {
/**
* Set current Instance
+ *
* @param instanceId {@link WXSDKInstance#mInstanceId}
*/
public synchronized void setStackTopInstance(final String instanceId) {
@@ -295,12 +289,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;
}
@@ -333,15 +327,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;
@@ -349,98 +343,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;
}
@@ -450,7 +443,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);
}
@@ -462,27 +455,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());
}
}
@@ -498,21 +491,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;
}
@@ -525,7 +518,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;
@@ -534,8 +527,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)) {
@@ -551,12 +544,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;
}
@@ -564,11 +557,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)) {
@@ -582,13 +575,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;
}
@@ -596,11 +589,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)) {
@@ -616,12 +609,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;
}
@@ -629,11 +622,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)) {
@@ -648,22 +641,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;
}
@@ -676,7 +667,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;
@@ -686,7 +677,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)) {
@@ -701,22 +692,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;
}
@@ -729,7 +718,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;
@@ -739,7 +728,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)) {
@@ -755,12 +744,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;
}
@@ -768,7 +757,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);
@@ -776,7 +765,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)) {
@@ -792,14 +781,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;
}
@@ -807,11 +796,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)) {
@@ -825,14 +814,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;
}
@@ -840,7 +829,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);
@@ -848,7 +837,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)) {
@@ -863,21 +852,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);
@@ -885,7 +874,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)) {
@@ -896,16 +885,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;
}
@@ -920,7 +909,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) {
@@ -940,57 +929,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();
- }
- 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;
+ if (WXEnvironment.getApplication() != null) {
+ crashFile = WXEnvironment.getApplication().getApplicationContext().getCacheDir().getPath() + crashFile;
+ // Log.e("jsengine", "callReportCrashReloadPage crashFile:" + crashFile);
}
- } 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;
@@ -1000,49 +989,46 @@ 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");
+ }
+ file.delete();
+ }
// Log.e("reportServerCrash", "WXBridge reportServerCrash crashFile:" + origin_filename);
// String filename = CRASHPATH;
// File oldfile = new File(origin_filename);
@@ -1069,17 +1055,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);
}
@@ -1094,12 +1080,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<>();
@@ -1131,6 +1117,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) {
@@ -1143,12 +1130,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
@@ -1157,16 +1145,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);
}
/**
@@ -1176,12 +1164,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);
@@ -1194,11 +1182,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);
}
/**
@@ -1206,29 +1195,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) {
@@ -1237,7 +1228,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);
}
@@ -1262,32 +1253,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);
}
}
@@ -1307,11 +1298,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());
}
@@ -1333,8 +1324,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);
}
@@ -1348,15 +1339,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());
+ // }
}
}
@@ -1366,15 +1357,27 @@ 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;
}
+
+ if (!isJSFrameworkInit() && reInitCount == 1) {
+ instance.onRenderError(WXRenderErrorCode.WX_CREATE_INSTANCE_ERROR, "createInstance fail!");
+ post(new Runnable() {
+ @Override
+ public void run() {
+ initFramework("");
+ }
+ }, instanceId);
+ return;
+ }
+
WXModuleManager.createDomModule(instance);
post(new Runnable() {
@Override
@@ -1386,7 +1389,7 @@ public class WXBridgeManager implements Callback,BactchExecutor {
@Override
public void run() {
- instance.createInstanceFinished(totalTime);
+ instance.createInstanceFinished(totalTime);
}
}, 0);
}
@@ -1403,37 +1406,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);
}
}
@@ -1444,11 +1447,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
@@ -1472,12 +1475,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);
}
}
@@ -1498,7 +1501,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);
@@ -1522,14 +1525,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);
}
@@ -1540,16 +1543,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());
}
@@ -1564,7 +1567,23 @@ public class WXBridgeManager implements Callback,BactchExecutor {
}
long start = System.currentTimeMillis();
- if(mWXBridge.initFramework(framework, assembleDefaultOptions())==INIT_FRAMEWORK_OK){
+ String crashFile = "";
+ try {
+ crashFile = WXEnvironment.getApplication().getApplicationContext().getCacheDir().getPath();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ boolean pieSupport = true;
+ try {
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
+ pieSupport = false;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ WXLogUtils.d("[WXBridgeManager] initFrameworkEnv crashFile:" + crashFile + " pieSupport:" + pieSupport);
+ // extends initFramework
+ if (mWXBridge.initFrameworkEnv(framework, assembleDefaultOptions(), crashFile, pieSupport) == INIT_FRAMEWORK_OK) {
WXEnvironment.sJSLibInitTime = System.currentTimeMillis() - start;
WXLogUtils.renderPerformanceLog("initFramework", WXEnvironment.sJSLibInitTime);
WXEnvironment.sSDKInitTime = System.currentTimeMillis() - WXEnvironment.sSDKInitStart;
@@ -1583,25 +1602,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);
}
}
@@ -1613,7 +1632,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;
}
@@ -1634,16 +1653,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
@@ -1715,16 +1734,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() {
@@ -1739,7 +1758,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;
}
@@ -1770,7 +1789,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");
}
}
@@ -1788,38 +1807,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");
}
}
@@ -1828,7 +1847,7 @@ public class WXBridgeManager implements Callback,BactchExecutor {
mJSThread.quit();
}
mBridgeManager = null;
- if(mDestroyedInstanceId!=null){
+ if (mDestroyedInstanceId != null) {
mDestroyedInstanceId.clear();
}
@@ -1839,105 +1858,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);
}
@@ -1963,7 +1975,7 @@ public class WXBridgeManager implements Callback,BactchExecutor {
public void run() {
if (!isJSFrameworkInit())
return;
-
+
invokeExecJS("", null, METHOD_NOTIFY_SERIALIZE_CODE_CACHE, new WXJSObject[0]);
}
});
@@ -1977,4 +1989,11 @@ public class WXBridgeManager implements Callback,BactchExecutor {
msg.sendToTarget();
}
+ public static class TimerInfo {
+
+ public String callbackId;
+ public long time;
+ public String instanceId;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/28dd9f3b/android/sdk/src/main/java/com/taobao/weex/common/Constants.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/common/Constants.java b/android/sdk/src/main/java/com/taobao/weex/common/Constants.java
index 94ac1e0..842229e 100644
--- a/android/sdk/src/main/java/com/taobao/weex/common/Constants.java
+++ b/android/sdk/src/main/java/com/taobao/weex/common/Constants.java
@@ -183,6 +183,9 @@ public class Constants {
String ARIA_LABEL = "ariaLabel";
String ARIA_HIDDEN = "ariaHidden";
+ String STICKY_OFFSET = "stickyOffset";
+ String HAS_FIXED_SIZE = "hasFixedSize";
+ String KEEP_POSITION_LAYOUT_DELAY = "keepPositionLayoutDelay";
interface Recycler{
String LIST_DATA = "listData";
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/28dd9f3b/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java b/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java
index 9d4885c..92b1585 100644
--- a/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java
+++ b/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java
@@ -38,6 +38,15 @@ public interface IWXBridge extends IWXObject {
*/
int initFramework(String framework, WXParams params);
+
+ /**
+ * init Weex
+ *
+ * @param framework assets/main.js
+ * @return
+ */
+ int initFrameworkEnv(String framework, WXParams params, String cacheDir, boolean pieSupport);
+
/**
* execute javascript function
*/