[ 
https://issues.apache.org/jira/browse/WEEX-572?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16582085#comment-16582085
 ] 

ASF GitHub Bot commented on WEEX-572:
-------------------------------------

YorkShen closed pull request #1444: [WEEX-572][Android] calculate 
apm(newPerformance time) by use method …
URL: https://github.com/apache/incubator-weex/pull/1444
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

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 dd213d5d0a..35eb693a82 100644
--- a/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
+++ b/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
@@ -585,7 +585,7 @@ private void renderInternal(String pageName,
       return;
     }
 
-    
mApmForInstance.onStage(WXInstanceApm.KEY_PAGE_STAGES_RENDER_ORGIGIN,System.currentTimeMillis());
+    mApmForInstance.onStage(WXInstanceApm.KEY_PAGE_STAGES_RENDER_ORGIGIN);
 
     mWXPerformance.pageName = (TextUtils.isEmpty(pageName) ? 
"defaultBundleUrl":pageName);
     if (TextUtils.isEmpty(mBundleUrl)) {
@@ -654,9 +654,9 @@ private void renderByUrlInternal(String pageName,
 
     Uri uri = Uri.parse(url);
     if (uri != null && TextUtils.equals(uri.getScheme(), "file")) {
-      
mApmForInstance.onStage(WXInstanceApm.KEY_PAGE_STAGES_DOWN_BUNDLE_START,System.currentTimeMillis());
+      mApmForInstance.onStage(WXInstanceApm.KEY_PAGE_STAGES_DOWN_BUNDLE_START);
       String template = WXFileUtils.loadFileOrAsset(assembleFilePath(uri), 
mContext);
-      
mApmForInstance.onStage(WXInstanceApm.KEY_PAGE_STAGES_DOWN_BUNDLE_END,System.currentTimeMillis());
+      mApmForInstance.onStage(WXInstanceApm.KEY_PAGE_STAGES_DOWN_BUNDLE_END);
       render(pageName,template , renderOptions, jsonInitData, flag);
       return;
     }
@@ -1808,7 +1808,7 @@ public void onHttpStart() {
               && this.instance.getWXStatisticsListener() != null) {
         this.instance.getWXStatisticsListener().onHttpStart();
       }
-      
mApmForInstance.onStage(WXInstanceApm.KEY_PAGE_STAGES_DOWN_BUNDLE_START,System.currentTimeMillis());
+      mApmForInstance.onStage(WXInstanceApm.KEY_PAGE_STAGES_DOWN_BUNDLE_START);
     }
 
     @Override
@@ -1837,7 +1837,7 @@ public void onHttpResponseProgress(int loadedLength) {
 
     @Override
     public void onHttpFinish(WXResponse response) {
-      
mApmForInstance.onStage(WXInstanceApm.KEY_PAGE_STAGES_DOWN_BUNDLE_END,System.currentTimeMillis());
+      mApmForInstance.onStage(WXInstanceApm.KEY_PAGE_STAGES_DOWN_BUNDLE_END);
 
       if (this.instance != null
               && this.instance.getWXStatisticsListener() != null) {
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 f034be3f3f..9a51fa64bc 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
@@ -1207,16 +1207,13 @@ public void run() {
       @Override
       public void run() {
         long start = System.currentTimeMillis();
-        
instance.getApmForInstance().onStage(WXInstanceApm.KEY_PAGE_STAGES_LOAD_BUNDLE_START,start);
+        
instance.getApmForInstance().onStage(WXInstanceApm.KEY_PAGE_STAGES_LOAD_BUNDLE_START);
         invokeCreateInstance(instance, template, options, data);
         long end = System.currentTimeMillis();
-        instance.getWXPerformance().callCreateInstanceTime = end;
-        
instance.getApmForInstance().onStage(WXInstanceApm.KEY_PAGE_STAGES_LOAD_BUNDLE_END,end);
+        instance.getWXPerformance().callCreateInstanceTime = end - start;
+        
instance.getApmForInstance().onStage(WXInstanceApm.KEY_PAGE_STAGES_LOAD_BUNDLE_END);
 
-        long totalTime =  instance.getWXPerformance().callCreateInstanceTime - 
start;
-        if (totalTime > 0) {
-          instance.getWXPerformance().communicateTime = totalTime;
-        }
+        instance.getWXPerformance().communicateTime =  
instance.getWXPerformance().callCreateInstanceTime;
       }
     }, instanceId);
   }
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/common/WXPerformance.java 
b/android/sdk/src/main/java/com/taobao/weex/common/WXPerformance.java
index de66d3770a..9c83e31705 100644
--- a/android/sdk/src/main/java/com/taobao/weex/common/WXPerformance.java
+++ b/android/sdk/src/main/java/com/taobao/weex/common/WXPerformance.java
@@ -397,7 +397,7 @@ public WXPerformance(String instanceId){
     quotas.put(Measure.JSTemplateSize.toString(), JSTemplateSize);
     quotas.put(Measure.pureNetworkTime.toString(), (double) pureNetworkTime);
     quotas.put(Measure.networkTime.toString(), (double) networkTime);
-    quotas.put(Measure.fsCreateInstanceTime.toString(), (double) 
(callCreateInstanceTime - renderTimeOrigin));
+    quotas.put(Measure.fsCreateInstanceTime.toString(), (double) 
callCreateInstanceTime);
     quotas.put(Measure.fsCallJsTotalTime.toString(), (double) 
fsCallJsTotalTime);
     quotas.put(Measure.fsCallJsTotalNum.toString(), (double) fsCallJsTotalNum);
     quotas.put(Measure.fsCallNativeTotalTime.toString(), (double) 
fsCallNativeTotalTime);
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 6f12f4a286..cb42b4c127 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
@@ -26,6 +26,7 @@
 import com.taobao.weex.WXSDKManager;
 import com.taobao.weex.common.WXErrorCode;
 import com.taobao.weex.utils.WXExceptionUtils;
+import com.taobao.weex.utils.WXUtils;
 
 public class WXInstanceApm {
 
@@ -121,15 +122,16 @@ public void onEvent(String name, Object value) {
     /**
      * record stage
      */
-    public void onStage(String name, long timestamp) {
+    public void onStage(String name) {
         WXSDKInstance instance = 
WXSDKManager.getInstance().getSDKInstance(mInstanceId);
+        long time =  WXUtils.getFixUnixTime();
         if (null != instance){
-            instance.getExceptionRecorder().recordStage(name,timestamp);
+            instance.getExceptionRecorder().recordStage(name, time);
         }
         if (null == apmInstance) {
             return;
         }
-        apmInstance.onStage(name, timestamp);
+        apmInstance.onStage(name, time);
     }
 
     /**
@@ -202,19 +204,19 @@ public void arriveFSRenderTime() {
         if (null == apmInstance){
             return;
         }
-        onStage(WXInstanceApm.KEY_PAGE_STAGES_NEW_FSRENDER, 
System.currentTimeMillis());
+        onStage(WXInstanceApm.KEY_PAGE_STAGES_NEW_FSRENDER);
         if (isFSEnd) {
             return;
         }
         isFSEnd = true;
-        onStage(WXInstanceApm.KEY_PAGE_STAGES_FSRENDER, 
System.currentTimeMillis());
+        onStage(WXInstanceApm.KEY_PAGE_STAGES_FSRENDER);
     }
 
     public void arriveInteraction(int screenViewCount, int allViewCount) {
         if (null == apmInstance) {
             return;
         }
-        onStage(WXInstanceApm.KEY_PAGE_STAGES_INTERACTION, 
System.currentTimeMillis());
+        onStage(WXInstanceApm.KEY_PAGE_STAGES_INTERACTION);
         updateMaxStats(KEY_PAGE_STATS_I_SCREEN_VIEW_COUNT, screenViewCount);
         updateMaxStats(KEY_PAGE_STATS_I_ALL_VIEW_COUNT, allViewCount);
         WXSDKInstance instance = 
WXSDKManager.getInstance().getSDKInstance(mInstanceId);
diff --git a/android/sdk/src/main/java/com/taobao/weex/utils/WXUtils.java 
b/android/sdk/src/main/java/com/taobao/weex/utils/WXUtils.java
index e3eac68c50..2a2a52f662 100644
--- a/android/sdk/src/main/java/com/taobao/weex/utils/WXUtils.java
+++ b/android/sdk/src/main/java/com/taobao/weex/utils/WXUtils.java
@@ -22,6 +22,7 @@
 import android.content.Context;
 import android.content.res.Configuration;
 import android.os.Looper;
+import android.os.SystemClock;
 import android.support.annotation.Nullable;
 import android.support.v4.util.LruCache;
 import android.text.TextUtils;
@@ -567,4 +568,10 @@ public static int getNumberInt(Object value, int 
defaultValue){
     }catch (Exception e){return  defaultValue;}
   }
 
+  private static final long sInterval = System.currentTimeMillis() - 
SystemClock.uptimeMillis();
+
+  public static long getFixUnixTime(){
+    return  sInterval + SystemClock.uptimeMillis();
+  }
+
 }


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


> [Android] calculate apm(newPerformance time) by use method 
> SystemClock.uptimeMillis
> -----------------------------------------------------------------------------------
>
>                 Key: WEEX-572
>                 URL: https://issues.apache.org/jira/browse/WEEX-572
>             Project: Weex
>          Issue Type: Bug
>          Components: Android
>            Reporter: peihan
>            Assignee: YorkShen
>            Priority: Major
>




--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to