You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by ky...@apache.org on 2019/01/08 07:22:17 UTC
[incubator-weex] branch master updated: [WEEX][Android] Support
Downgrade To Full Page Root Instance (#1952)
This is an automated email from the ASF dual-hosted git repository.
kyork pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-weex.git
The following commit(s) were added to refs/heads/master by this push:
new 8b9ce52 [WEEX][Android] Support Downgrade To Full Page Root Instance (#1952)
8b9ce52 is described below
commit 8b9ce52b33a3665dfa1d64ee045e66d4d7e6d9c0
Author: codefurture <gu...@163.com>
AuthorDate: Tue Jan 8 15:22:13 2019 +0800
[WEEX][Android] Support Downgrade To Full Page Root Instance (#1952)
---
.../sdk/src/main/java/com/taobao/weex/WXSDKInstance.java | 13 +++++++++++++
.../main/java/com/taobao/weex/common/WXInstanceWrap.java | 9 ++++++++-
.../src/main/java/com/taobao/weex/ui/component/WXEmbed.java | 2 +-
3 files changed, 22 insertions(+), 2 deletions(-)
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 36ca0bb..083dc90 100644
--- a/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
+++ b/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
@@ -182,6 +182,8 @@ public class WXSDKInstance implements IWXActivityStateListener,View.OnLayoutChan
private List<String> mLayerOverFlowListeners;
+ private WXSDKInstance mParentInstance;
+
public List<String> getLayerOverFlowListeners() {
return mLayerOverFlowListeners;
}
@@ -1499,6 +1501,14 @@ public class WXSDKInstance implements IWXActivityStateListener,View.OnLayoutChan
mWXPerformance.screenRenderTime = System.currentTimeMillis() - mRenderStartTime;
}
+ public WXSDKInstance getParentInstance() {
+ return mParentInstance;
+ }
+
+ public void setParentInstance(WXSDKInstance mParentInstance) {
+ this.mParentInstance = mParentInstance;
+ }
+
private void destroyView(View rootView) {
try {
if (rootView instanceof ViewGroup) {
@@ -1522,6 +1532,9 @@ public class WXSDKInstance implements IWXActivityStateListener,View.OnLayoutChan
public synchronized void destroy() {
if(!isDestroy()) {
+ if(mParentInstance != null){
+ mParentInstance = null;
+ }
mApmForInstance.onEnd();
if(mRendered) {
WXSDKManager.getInstance().destroyInstance(mInstanceId);
diff --git a/android/sdk/src/main/java/com/taobao/weex/common/WXInstanceWrap.java b/android/sdk/src/main/java/com/taobao/weex/common/WXInstanceWrap.java
index cbca430..46c6274 100644
--- a/android/sdk/src/main/java/com/taobao/weex/common/WXInstanceWrap.java
+++ b/android/sdk/src/main/java/com/taobao/weex/common/WXInstanceWrap.java
@@ -18,6 +18,7 @@
*/
package com.taobao.weex.common;
+import com.taobao.weex.WXSDKInstance;
import com.taobao.weex.annotation.JSMethod;
/**
@@ -28,7 +29,13 @@ public class WXInstanceWrap extends WXModule {
@JSMethod
public void error(String type, String code, String info) {
if (mWXSDKInstance != null) {
- mWXSDKInstance.onRenderError(type + "|" + code, info);
+ WXSDKInstance root = mWXSDKInstance;
+ if(info != null && info.contains("downgrade_to_root")){
+ while (root.getParentInstance() != null){
+ root = root.getParentInstance();
+ }
+ }
+ root.onRenderError(type + "|" + code, info);
}
}
}
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXEmbed.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXEmbed.java
index 81b4025..b95c8a0 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXEmbed.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXEmbed.java
@@ -338,7 +338,7 @@ public class WXEmbed extends WXDiv implements WXSDKInstance.OnInstanceVisibleLis
private WXSDKInstance createInstance() {
WXSDKInstance sdkInstance = getInstance().createNestedInstance(this);
-
+ sdkInstance.setParentInstance(getInstance());
boolean needsAdd = !getAttrs().containsKey("disableInstanceVisibleListener");
if(needsAdd){ //prevent switch off fire viewappear event twice
getInstance().addOnInstanceVisibleListener(this);