[WEEX-174][android] TemplateList Support Lifecycle and statefull component
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/d6af2aae Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/d6af2aae Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/d6af2aae Branch: refs/heads/master Commit: d6af2aae2143bb0198a3df6201cad81bcf6e1ee1 Parents: 30ad3f6 Author: jianbai.gbj <jianbai....@alibaba-inc.com> Authored: Thu Feb 8 15:13:25 2018 +0800 Committer: jianbai.gbj <jianbai....@alibaba-inc.com> Committed: Thu Feb 8 15:13:25 2018 +0800 ---------------------------------------------------------------------- .../weex/commons/adapter/ImageAdapter.java | 49 +++++++++++--------- .../java/com/taobao/weex/dom/WXDomModule.java | 2 +- .../weex/dom/action/UpdateAttributeAction.java | 4 ++ .../weex/ui/component/binding/Statements.java | 6 ++- 4 files changed, 36 insertions(+), 25 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/d6af2aae/android/commons/src/main/java/com/alibaba/weex/commons/adapter/ImageAdapter.java ---------------------------------------------------------------------- diff --git a/android/commons/src/main/java/com/alibaba/weex/commons/adapter/ImageAdapter.java b/android/commons/src/main/java/com/alibaba/weex/commons/adapter/ImageAdapter.java index 63625f8..5a7a311 100644 --- a/android/commons/src/main/java/com/alibaba/weex/commons/adapter/ImageAdapter.java +++ b/android/commons/src/main/java/com/alibaba/weex/commons/adapter/ImageAdapter.java @@ -19,6 +19,7 @@ package com.alibaba.weex.commons.adapter; import android.net.Uri; +import android.os.Looper; import android.text.TextUtils; import android.widget.ImageView; @@ -38,8 +39,7 @@ public class ImageAdapter implements IWXImgLoaderAdapter { @Override public void setImage(final String url, final ImageView view, WXImageQuality quality, final WXImageStrategy strategy) { - - WXSDKManager.getInstance().postOnUiThread(new Runnable() { + Runnable runnable = new Runnable() { @Override public void run() { @@ -68,28 +68,33 @@ public class ImageAdapter implements IWXImgLoaderAdapter { } Picasso.with(WXEnvironment.getApplication()) - .load(temp) - .transform(new BlurTransformation(strategy.blurRadius)) - .into(view, new Callback() { - @Override - public void onSuccess() { - if(strategy.getImageListener()!=null){ - strategy.getImageListener().onImageFinish(url,view,true,null); - } + .load(temp) + .transform(new BlurTransformation(strategy.blurRadius)) + .into(view, new Callback() { + @Override + public void onSuccess() { + if(strategy.getImageListener()!=null){ + strategy.getImageListener().onImageFinish(url,view,true,null); + } - if(!TextUtils.isEmpty(strategy.placeHolder)){ - ((Picasso) view.getTag(strategy.placeHolder.hashCode())).cancelRequest(view); - } - } + if(!TextUtils.isEmpty(strategy.placeHolder)){ + ((Picasso) view.getTag(strategy.placeHolder.hashCode())).cancelRequest(view); + } + } - @Override - public void onError() { - if(strategy.getImageListener()!=null){ - strategy.getImageListener().onImageFinish(url,view,false,null); - } - } - }); + @Override + public void onError() { + if(strategy.getImageListener()!=null){ + strategy.getImageListener().onImageFinish(url,view,false,null); + } + } + }); } - },0); + }; + if(Thread.currentThread() == Looper.getMainLooper().getThread()){ + runnable.run(); + }else { + WXSDKManager.getInstance().postOnUiThread(runnable, 0); + } } } http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/d6af2aae/android/sdk/src/main/java/com/taobao/weex/dom/WXDomModule.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/WXDomModule.java b/android/sdk/src/main/java/com/taobao/weex/dom/WXDomModule.java index b764630..b9bbefd 100644 --- a/android/sdk/src/main/java/com/taobao/weex/dom/WXDomModule.java +++ b/android/sdk/src/main/java/com/taobao/weex/dom/WXDomModule.java @@ -101,7 +101,7 @@ public final class WXDomModule extends WXModule { Action action = Actions.get(method,args); if(action == null){ WXLogUtils.e("Unknown dom action " - + method + " " + args.toJSONString()); + + method + " args " + (args == null ? " null" : args.toJSONString())); return null; } if(action instanceof DOMAction){ http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/d6af2aae/android/sdk/src/main/java/com/taobao/weex/dom/action/UpdateAttributeAction.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/action/UpdateAttributeAction.java b/android/sdk/src/main/java/com/taobao/weex/dom/action/UpdateAttributeAction.java index 78022f1..ac6ca5d 100644 --- a/android/sdk/src/main/java/com/taobao/weex/dom/action/UpdateAttributeAction.java +++ b/android/sdk/src/main/java/com/taobao/weex/dom/action/UpdateAttributeAction.java @@ -49,6 +49,10 @@ class UpdateAttributeAction extends TraceableAction implements DOMAction, Render if (context.isDestory()) { return; } + if(mData == null){ + return; + } + WXSDKInstance instance = context.getInstance(); final WXDomObject domObject = context.getDomByRef(mRef); if (domObject == null) { http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/d6af2aae/android/sdk/src/main/java/com/taobao/weex/ui/component/binding/Statements.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/binding/Statements.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/binding/Statements.java index b0b383e..f0ddf03 100644 --- a/android/sdk/src/main/java/com/taobao/weex/ui/component/binding/Statements.java +++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/binding/Statements.java @@ -234,8 +234,10 @@ public class Statements { renderNode = copyComponentTree(component, parent); renderNode.setWaste(false); WXDomObject renderNodeDomObject = (WXDomObject) renderNode.getDomObject(); - renderNodeDomObject.getAttrs().getStatement().remove(WXStatement.WX_FOR); - renderNodeDomObject.getAttrs().getStatement().remove(WXStatement.WX_IF); //FIXME clear node's statement + if(renderNodeDomObject.getAttrs().getStatement() != null) { + renderNodeDomObject.getAttrs().getStatement().remove(WXStatement.WX_FOR); + renderNodeDomObject.getAttrs().getStatement().remove(WXStatement.WX_IF); //clear node's statement + } parentDomObject.add(renderNodeDomObject, renderIndex); parent.addChild(renderNode, renderIndex); updates.add(renderNode);