[1/2] incubator-weex git commit: [WEEX-134][android] createInstance and initFramework may on different Thread, add volatile static for mInit

2017-11-19 Thread gurisxie
Repository: incubator-weex
Updated Branches:
  refs/heads/v0.17 28d047512 -> b0704cd11


 [WEEX-134][android] createInstance and initFramework may on different Thread, 
add volatile static for mInit


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/713c6193
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/713c6193
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/713c6193

Branch: refs/heads/v0.17
Commit: 713c6193a0a72beddf1800444dfa4c95d4c2dfdd
Parents: d1af84c
Author: yuhun-alibaba 
Authored: Fri Nov 17 00:16:02 2017 +0800
Committer: yuhun-alibaba 
Committed: Mon Nov 20 10:21:46 2017 +0800

--
 .../com/taobao/weex/bridge/WXBridgeManager.java | 34 
 1 file changed, 21 insertions(+), 13 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/713c6193/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 b6db683..52187ee 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
@@ -137,9 +137,14 @@ public class WXBridgeManager implements Callback, 
BactchExecutor {
   private static final int CRASHREINIT = 50;
   static volatile WXBridgeManager mBridgeManager;
   private static long LOW_MEM_VALUE = 120;
-  private static int reInitCount = 1;
+  private volatile static int reInitCount = 1;
   private static String crashUrl = null;
   private static long lastCrashTime = 0;
+
+  /**
+   * Whether JS Framework(main.js) has been initialized.
+   */
+  private volatile static boolean mInit = false;
   /**
* package
**/
@@ -156,10 +161,7 @@ public class WXBridgeManager implements Callback, 
BactchExecutor {
   private IWXDebugProxy mWxDebugProxy;
 
   private boolean mMock = false;
-  /**
-   * Whether JS Framework(main.js) has been initialized.
-   */
-  private boolean mInit = false;
+
   private List> mRegisterComponentFailList = new 
ArrayList<>(8);
   private List> mRegisterModuleFailList = new 
ArrayList<>(8);
   private List mRegisterServiceFailList = new ArrayList<>(8);
@@ -185,8 +187,14 @@ public class WXBridgeManager implements Callback, 
BactchExecutor {
 return mBridgeManager;
   }
 
+  // setJSFrameworkInit and isJSFrameworkInit may use on diff thread
+  // use volatile
   private boolean isJSFrameworkInit() {
-return mInit;
+  return mInit;
+  }
+
+  private void setJSFrameworkInit(boolean init) {
+  mInit = init;
   }
 
   private void initWXBridge(boolean remoteDebug) {
@@ -269,7 +277,7 @@ public class WXBridgeManager implements Callback, 
BactchExecutor {
* Model switch. For now, debug model and release model are supported
*/
   public void restart() {
-mInit = false;
+setJSFrameworkInit(false);
 initWXBridge(WXEnvironment.sRemoteDebugMode);
   }
 
@@ -949,7 +957,7 @@ public class WXBridgeManager implements Callback, 
BactchExecutor {
   }
   reInitCount++;
   // reinit frame work
-  mInit = false;
+  setJSFrameworkInit(false);
   initScriptsFramework("");
 
   if (mDestroyedInstanceId != null && 
mDestroyedInstanceId.contains(instanceId)) {
@@ -1387,8 +1395,8 @@ public class WXBridgeManager implements Callback, 
BactchExecutor {
 final long totalTime = System.currentTimeMillis() - start;
 WXSDKManager.getInstance().postOnUiThread(new Runnable() {
 
-  @Override
-  public void run() {
+@Override
+public void run() {
 instance.createInstanceFinished(totalTime);
   }
 }, 0);
@@ -1560,7 +1568,7 @@ public class WXBridgeManager implements Callback, 
BactchExecutor {
 framework = WXFileUtils.loadAsset("main.js", 
WXEnvironment.getApplication());
   }
   if (TextUtils.isEmpty(framework)) {
-mInit = false;
+setJSFrameworkInit(false);
 commitJSFrameworkAlarmMonitor(IWXUserTrackAdapter.JS_FRAMEWORK, 
WXErrorCode.WX_ERR_JS_FRAMEWORK, "JS Framework is empty!");
 return;
   }
@@ -1591,7 +1599,7 @@ public class WXBridgeManager implements Callback, 
BactchExecutor {
   WXLogUtils.renderPerformanceLog("initFramework", 
WXEnvironment.sJSLibInitTime);
   WXEnvironment.sSDKInitTime = System.currentTimeMillis() - 
WXEnvironment.sSDKInitStart;
   WXLogUtils.renderPerformanceLog("SDKInitTime", 
WXEnvironment.sSDKInitTime);
-  mInit = true;
+  

[1/2] incubator-weex git commit: [WEEX-134][android] createInstance and initFramework may on different Thread, add volatile static for mInit

2017-11-19 Thread gurisxie
Repository: incubator-weex
Updated Branches:
  refs/heads/master 28d047512 -> b0704cd11


 [WEEX-134][android] createInstance and initFramework may on different Thread, 
add volatile static for mInit


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/713c6193
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/713c6193
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/713c6193

Branch: refs/heads/master
Commit: 713c6193a0a72beddf1800444dfa4c95d4c2dfdd
Parents: d1af84c
Author: yuhun-alibaba 
Authored: Fri Nov 17 00:16:02 2017 +0800
Committer: yuhun-alibaba 
Committed: Mon Nov 20 10:21:46 2017 +0800

--
 .../com/taobao/weex/bridge/WXBridgeManager.java | 34 
 1 file changed, 21 insertions(+), 13 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/713c6193/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 b6db683..52187ee 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
@@ -137,9 +137,14 @@ public class WXBridgeManager implements Callback, 
BactchExecutor {
   private static final int CRASHREINIT = 50;
   static volatile WXBridgeManager mBridgeManager;
   private static long LOW_MEM_VALUE = 120;
-  private static int reInitCount = 1;
+  private volatile static int reInitCount = 1;
   private static String crashUrl = null;
   private static long lastCrashTime = 0;
+
+  /**
+   * Whether JS Framework(main.js) has been initialized.
+   */
+  private volatile static boolean mInit = false;
   /**
* package
**/
@@ -156,10 +161,7 @@ public class WXBridgeManager implements Callback, 
BactchExecutor {
   private IWXDebugProxy mWxDebugProxy;
 
   private boolean mMock = false;
-  /**
-   * Whether JS Framework(main.js) has been initialized.
-   */
-  private boolean mInit = false;
+
   private List> mRegisterComponentFailList = new 
ArrayList<>(8);
   private List> mRegisterModuleFailList = new 
ArrayList<>(8);
   private List mRegisterServiceFailList = new ArrayList<>(8);
@@ -185,8 +187,14 @@ public class WXBridgeManager implements Callback, 
BactchExecutor {
 return mBridgeManager;
   }
 
+  // setJSFrameworkInit and isJSFrameworkInit may use on diff thread
+  // use volatile
   private boolean isJSFrameworkInit() {
-return mInit;
+  return mInit;
+  }
+
+  private void setJSFrameworkInit(boolean init) {
+  mInit = init;
   }
 
   private void initWXBridge(boolean remoteDebug) {
@@ -269,7 +277,7 @@ public class WXBridgeManager implements Callback, 
BactchExecutor {
* Model switch. For now, debug model and release model are supported
*/
   public void restart() {
-mInit = false;
+setJSFrameworkInit(false);
 initWXBridge(WXEnvironment.sRemoteDebugMode);
   }
 
@@ -949,7 +957,7 @@ public class WXBridgeManager implements Callback, 
BactchExecutor {
   }
   reInitCount++;
   // reinit frame work
-  mInit = false;
+  setJSFrameworkInit(false);
   initScriptsFramework("");
 
   if (mDestroyedInstanceId != null && 
mDestroyedInstanceId.contains(instanceId)) {
@@ -1387,8 +1395,8 @@ public class WXBridgeManager implements Callback, 
BactchExecutor {
 final long totalTime = System.currentTimeMillis() - start;
 WXSDKManager.getInstance().postOnUiThread(new Runnable() {
 
-  @Override
-  public void run() {
+@Override
+public void run() {
 instance.createInstanceFinished(totalTime);
   }
 }, 0);
@@ -1560,7 +1568,7 @@ public class WXBridgeManager implements Callback, 
BactchExecutor {
 framework = WXFileUtils.loadAsset("main.js", 
WXEnvironment.getApplication());
   }
   if (TextUtils.isEmpty(framework)) {
-mInit = false;
+setJSFrameworkInit(false);
 commitJSFrameworkAlarmMonitor(IWXUserTrackAdapter.JS_FRAMEWORK, 
WXErrorCode.WX_ERR_JS_FRAMEWORK, "JS Framework is empty!");
 return;
   }
@@ -1591,7 +1599,7 @@ public class WXBridgeManager implements Callback, 
BactchExecutor {
   WXLogUtils.renderPerformanceLog("initFramework", 
WXEnvironment.sJSLibInitTime);
   WXEnvironment.sSDKInitTime = System.currentTimeMillis() - 
WXEnvironment.sSDKInitStart;
   WXLogUtils.renderPerformanceLog("SDKInitTime", 
WXEnvironment.sSDKInitTime);
-  mInit = true;
+