Fix Poplayer multi Thread Native Crash
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 cc3a8c8..a770415 100644
--- a/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
+++ b/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
@@ -2394,14 +2394,34 @@
}
public void OnVSync() {
- boolean forceLayout = WXBridgeManager.getInstance().notifyLayout(getInstanceId());
- if(forceLayout) {
+ boolean fixMultiThreadBug = false;
+
+ IWXConfigAdapter adapter = WXSDKManager.getInstance().getWxConfigAdapter();
+ if (adapter != null) {
+ String config = adapter.getConfig("android_weex_ext_config", "fixMultiThreadBug", "true");
+ fixMultiThreadBug = Boolean.parseBoolean(config);
+ }
+
+ if(fixMultiThreadBug) {
WXBridgeManager.getInstance().post(new Runnable() {
@Override
public void run() {
- WXBridgeManager.getInstance().forceLayout(getInstanceId());
+ boolean forceLayout = WXBridgeManager.getInstance().notifyLayout(getInstanceId());
+ if(forceLayout) {
+ WXBridgeManager.getInstance().forceLayout(getInstanceId());
+ }
}
});
+ } else {
+ boolean forceLayout = WXBridgeManager.getInstance().notifyLayout(getInstanceId());
+ if(forceLayout) {
+ WXBridgeManager.getInstance().post(new Runnable() {
+ @Override
+ public void run() {
+ WXBridgeManager.getInstance().forceLayout(getInstanceId());
+ }
+ });
+ }
}
}
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 72843a7..c4c7b2f 100755
--- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
+++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
@@ -3473,7 +3473,6 @@
* @param instanceId
* @return
*/
- @UiThread
public boolean notifyLayout(String instanceId) {
if (isSkipFrameworkInit(instanceId) || isJSFrameworkInit()) {
return mWXBridge.notifyLayout(instanceId);
@@ -3481,7 +3480,6 @@
return false;
}
- @UiThread
public void forceLayout(String instanceId) {
if (isSkipFrameworkInit(instanceId) || isJSFrameworkInit()) {
mWXBridge.forceLayout(instanceId);