[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);

Reply via email to