diff --git a/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java b/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java index 48179830e6..ab74905e34 100644 --- a/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java +++ b/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java @@ -707,6 +707,7 @@ private void renderByUrlInternal(String pageName, } mApmForInstance.doInit(); + mApmForInstance.setPageName(pageName); Uri uri = Uri.parse(url); if (uri != null && TextUtils.equals(uri.getScheme(), "file")) { @@ -735,6 +736,7 @@ private void renderByUrlInternal(String pageName, WXHttpListener httpListener = new WXHttpListener(pageName, renderOptions, jsonInitData, flag, System.currentTimeMillis()); httpListener.setSDKInstance(this); + mApmForInstance.onStage(WXInstanceApm.KEY_PAGE_STAGES_DOWN_BUNDLE_START); adapter.sendRequest(wxRequest, (IWXHttpAdapter.OnHttpListener) httpListener); } @@ -1876,7 +1878,6 @@ public void onHttpStart() { && this.instance.getWXStatisticsListener() != null) { this.instance.getWXStatisticsListener().onHttpStart(); } - mApmForInstance.onStage(WXInstanceApm.KEY_PAGE_STAGES_DOWN_BUNDLE_START); } @Override 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 652cb2d25d..6c3b593ff1 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 @@ -2097,6 +2097,7 @@ public void reportJSException(String instanceId, String function, + ", exception function:" + function + ", exception:" + exception); WXSDKInstance instance = null; + WXErrorCode reportErrorCode = WXErrorCode.WX_ERR_JS_EXECUTE; if (instanceId != null && (instance = WXSDKManager.getInstance().getSDKInstance(instanceId)) != null) { exception += "\n getTemplateInfo==" +instance.getTemplateInfo();//add network header info if (METHOD_CREATE_INSTANCE.equals(function) || !instance.isContentMd5Match()) { @@ -2127,12 +2128,17 @@ public void reportJSException(String instanceId, String function, e.printStackTrace(); } } - instance.onJSException(WXErrorCode.WX_ERR_JS_EXECUTE.getErrorCode(), function, exception); + if (METHOD_CREATE_INSTANCE.equals(function) && !instance.getExceptionRecorder().hasAddView.get()){ + reportErrorCode = WXErrorCode.WX_RENDER_ERR_JS_CREATE_INSTANCE; + }else if ( METHOD_CREATE_INSTANCE_CONTEXT.equals(function) && !instance.getExceptionRecorder().hasAddView.get()){ + reportErrorCode = WXErrorCode.WX_RENDER_ERR_JS_CREATE_INSTANCE_CONTEXT; + } + instance.onJSException(reportErrorCode.getErrorCode(), function, exception); } - doReportJSException(instanceId,function,exception); + doReportJSException(instanceId,function,reportErrorCode,exception); } - private void doReportJSException(String instanceId, String function, String exception){ + private void doReportJSException(String instanceId, String function,WXErrorCode reportCode, String exception){ WXSDKInstance instance = WXSDKManager.getInstance().getAllInstanceMap().get(instanceId); IWXJSExceptionAdapter adapter = WXSDKManager.getInstance().getIWXJSExceptionAdapter(); if (adapter != null) { @@ -2182,18 +2188,9 @@ private void doReportJSException(String instanceId, String function, String exce } - WXErrorCode errorCode; - if (METHOD_CREATE_INSTANCE.equals(function)){ - errorCode = WXErrorCode.WX_RENDER_ERR_JS_CREATE_INSTANCE; - }else if ( METHOD_CREATE_INSTANCE_CONTEXT.equals(function)){ - errorCode = WXErrorCode.WX_RENDER_ERR_JS_CREATE_INSTANCE_CONTEXT; - }else { - errorCode = WXErrorCode.WX_KEY_EXCEPTION_WXBRIDGE; - } - - WXExceptionUtils.commitCriticalExceptionRT(exceptionId, errorCode, + WXExceptionUtils.commitCriticalExceptionRT(exceptionId, reportCode, function, - errorCode.getErrorMsg() + exception, + reportCode.getErrorMsg() + exception, null); } diff --git a/android/sdk/src/main/java/com/taobao/weex/performance/WXInstanceApm.java b/android/sdk/src/main/java/com/taobao/weex/performance/WXInstanceApm.java index 875e3d789d..b868dc265d 100644 --- a/android/sdk/src/main/java/com/taobao/weex/performance/WXInstanceApm.java +++ b/android/sdk/src/main/java/com/taobao/weex/performance/WXInstanceApm.java @@ -18,8 +18,6 @@ */ package com.taobao.weex.performance; -import java.util.ArrayList; -import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -116,12 +114,10 @@ public class WXInstanceApm { private boolean mEnd = false; private boolean hasRecordFistInteractionView =false; public final Map extInfo; - private List mCountDownInteractionComponentList; public WXInstanceApm(String instanceId) { mInstanceId = instanceId; extInfo = new ConcurrentHashMap<>(); - mCountDownInteractionComponentList = new ArrayList<>(10); IApmGenerator generator = WXSDKManager.getInstance().getApmGenerater(); if (null != generator) { apmInstance = generator.generateApmInstance(WEEX_PAGE_TOPIC); @@ -262,6 +258,7 @@ public void arriveFSRenderTime() { if (null == apmInstance){ return; } + isFSEnd = true; onStage(WXInstanceApm.KEY_PAGE_STAGES_FSRENDER); } @@ -269,39 +266,27 @@ public void arriveInteraction(WXComponent targetComponent) { if (null == apmInstance || null == targetComponent || targetComponent.getInstance() == null ) { return; } - targetComponent.interactionTime = WXUtils.getFixUnixTime(); WXPerformance performanceRecord = targetComponent.getInstance().getWXPerformance(); if (null == performanceRecord){ return; } - if (BuildConfig.DEBUG){ - Log.d("wxapm", "screenComponent ["+targetComponent.getComponentType()+","+targetComponent.getRef() - +"], renderTime:"+ (targetComponent.interactionTime -performanceRecord.renderTimeOrigin) - +",style:"+targetComponent.getStyles() - +",attrs:"+targetComponent.getAttrs()); - } - if (!hasRecordFistInteractionView){ onStage(KEY_PAGE_STAGES_FIRST_INTERACTION_VIEW); hasRecordFistInteractionView = true; } - if (mCountDownInteractionComponentList.size() <10){ - mCountDownInteractionComponentList.add(targetComponent); - return; - } - mCountDownInteractionComponentList.add(targetComponent); - WXComponent preComponent = mCountDownInteractionComponentList.remove(0); - if (null == preComponent){ - return; - } + + long curTIme = WXUtils.getFixUnixTime(); if (BuildConfig.DEBUG){ - Log.d("wxapm", "interaction record component ["+preComponent.getComponentType()+","+preComponent.getRef()); + Log.d("wxapm", "screenComponent ["+targetComponent.getComponentType()+","+targetComponent.getRef() + +"], renderTime:"+ (curTIme -performanceRecord.renderTimeOrigin) + +",style:"+targetComponent.getStyles() + +",attrs:"+targetComponent.getAttrs()); } - performanceRecord.interactionTime = preComponent.interactionTime - performanceRecord.renderTimeOrigin; - onStageWithTime(KEY_PAGE_STAGES_INTERACTION,preComponent.interactionTime); + performanceRecord.interactionTime = curTIme - performanceRecord.renderTimeOrigin; + onStageWithTime(KEY_PAGE_STAGES_INTERACTION,curTIme); updateDiffStats(KEY_PAGE_STATS_I_SCREEN_VIEW_COUNT, 1); updateMaxStats(KEY_PAGE_STATS_I_ALL_VIEW_COUNT, performanceRecord.localInteractionViewAddCount); diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java index 91f6fd7612..7840b9a394 100644 --- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java +++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java @@ -170,7 +170,6 @@ public abstract class WXComponent extends WXBasicComponent imple private String mLastBoxShadowId; public int mDeepInComponentTree = 0; public boolean mIsAddElementToTree = false; - public long interactionTime; public WXTracing.TraceInfo mTraceInfo = new WXTracing.TraceInfo();