Repository: incubator-weex Updated Branches: refs/heads/master aef41c82f -> 6d5992ee5
*[Android] add mergeAttr. Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/6d5992ee Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/6d5992ee Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/6d5992ee Branch: refs/heads/master Commit: 6d5992ee5c766526ca877027908aada1461c32ca Parents: 1b73f04 Author: 驱影 <jike....@alibaba-inc.com> Authored: Tue May 15 18:12:56 2018 +0800 Committer: YorkShen <shenyua...@gmail.com> Committed: Wed May 16 16:46:56 2018 +0800 ---------------------------------------------------------------------- .../main/java/com/taobao/weex/dom/WXAttr.java | 47 +++++++++++++------- .../weex/ui/action/GraphicActionUpdateAttr.java | 1 + 2 files changed, 32 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/6d5992ee/android/sdk/src/main/java/com/taobao/weex/dom/WXAttr.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/WXAttr.java b/android/sdk/src/main/java/com/taobao/weex/dom/WXAttr.java index ef2b99b..1ff916d 100644 --- a/android/sdk/src/main/java/com/taobao/weex/dom/WXAttr.java +++ b/android/sdk/src/main/java/com/taobao/weex/dom/WXAttr.java @@ -18,11 +18,14 @@ */ package com.taobao.weex.dom; -import static com.taobao.weex.dom.binding.ELUtils.COMPONENT_PROPS; -import static com.taobao.weex.dom.binding.ELUtils.EXCLUDES_BINDING; -import static java.lang.Boolean.parseBoolean; +import java.util.Collection; +import java.util.Iterator; +import java.util.Locale; +import java.util.Map; +import java.util.Set; import android.support.annotation.NonNull; +import android.support.annotation.UiThread; import android.support.v4.util.ArrayMap; import android.text.TextUtils; import com.taobao.weex.common.Constants; @@ -35,11 +38,10 @@ import com.taobao.weex.ui.view.listview.WXRecyclerView; import com.taobao.weex.utils.WXLogUtils; import com.taobao.weex.utils.WXUtils; import com.taobao.weex.utils.WXViewUtils; -import java.util.Collection; -import java.util.Iterator; -import java.util.Locale; -import java.util.Map; -import java.util.Set; + +import static com.taobao.weex.dom.binding.ELUtils.COMPONENT_PROPS; +import static com.taobao.weex.dom.binding.ELUtils.EXCLUDES_BINDING; +import static java.lang.Boolean.parseBoolean; /** * store value of component attribute @@ -53,6 +55,7 @@ public class WXAttr implements Map<String, Object>,Cloneable { * static attrs * */ private @NonNull Map<String, Object> attr; + private Map<String, Object> writeAttr; /** * dynamic binding attrs, can be null, only weex use @@ -401,6 +404,13 @@ public class WXAttr implements Map<String, Object>,Cloneable { @Override public Object get(Object key) { + Map<String, Object> temp = writeAttr; + if (null != temp) { + Object obj = temp.get(key); + if (null != obj) { + return obj; + } + } return attr.get(key); } @@ -425,11 +435,11 @@ public class WXAttr implements Map<String, Object>,Cloneable { @Override public void putAll(Map<? extends String, ?> map) { - // copy on write. - Map<String, Object> copyAttr = new ArrayMap<>(); - copyAttr.putAll(this.attr); - copyAttr.putAll(map); - this.attr = copyAttr; + //this.attr.putAll(map); + if (this.writeAttr == null) { + this.writeAttr = new ArrayMap<>(); + } + this.writeAttr.putAll(map); } @Override @@ -471,15 +481,12 @@ public class WXAttr implements Map<String, Object>,Cloneable { this.mStatement = mStatement; } - - public void parseStatements(){ if(this.attr != null){ this.attr = filterStatementsFromAttrs(this.attr); } } - /** * filter dynamic state ment * */ @@ -554,6 +561,14 @@ public class WXAttr implements Map<String, Object>,Cloneable { this.attr.putAll(attrs); } + @UiThread + public void mergeAttr() { + if (null != this.writeAttr) { + this.attr.putAll(this.writeAttr); + this.writeAttr = null; + } + } + @Override public WXAttr clone() { WXAttr wxAttr = new WXAttr(); http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/6d5992ee/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionUpdateAttr.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionUpdateAttr.java b/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionUpdateAttr.java index 64f3fdd..c3482db 100644 --- a/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionUpdateAttr.java +++ b/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionUpdateAttr.java @@ -47,6 +47,7 @@ public class GraphicActionUpdateAttr extends BasicGraphicAction { if (component == null) { return; } + component.getAttrs().mergeAttr(); component.updateAttrs(mAttrs); } }