You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@weex.apache.org by GitBox <gi...@apache.org> on 2018/09/26 06:13:17 UTC

[GitHub] YorkShen closed pull request #1579: [WEEX-586][Android] Revert Weex Render High Performance Cross Platform

YorkShen closed pull request #1579: [WEEX-586][Android] Revert Weex Render High Performance Cross Platform
URL: https://github.com/apache/incubator-weex/pull/1579
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/android/playground/app/src/main/java/com/alibaba/weex/WXApplication.java b/android/playground/app/src/main/java/com/alibaba/weex/WXApplication.java
index 879fd06bc0..48d59f4e37 100644
--- a/android/playground/app/src/main/java/com/alibaba/weex/WXApplication.java
+++ b/android/playground/app/src/main/java/com/alibaba/weex/WXApplication.java
@@ -39,7 +39,6 @@
 import com.alibaba.weex.extend.module.WXEventModule;
 import com.alibaba.weex.extend.module.WXTitleBar;
 import com.alibaba.weex.extend.module.WXWsonTestModule;
-import com.alibaba.weex.extend.render.PicassoImageAdapter;
 import com.facebook.drawee.backends.pipeline.Fresco;
 import com.taobao.weex.InitConfig;
 import com.taobao.weex.WXEnvironment;
@@ -47,9 +46,6 @@
 import com.taobao.weex.WXSDKManager;
 import com.taobao.weex.bridge.WXBridgeManager;
 import com.taobao.weex.common.WXException;
-import com.taobao.weex.render.RenderSDK;
-import com.taobao.weex.render.bridge.RenderBridge;
-import com.taobao.weex.render.log.RenderLog;
 
 public class WXApplication extends Application {
 
@@ -90,7 +86,7 @@ public void onCreate() {
       WXSDKEngine.registerComponent("synccomponent", WXComponentSyncTest.class);
       WXSDKEngine.registerComponent(WXParallax.PARALLAX, WXParallax.class);
 
-      //WXSDKEngine.registerComponent("richtext", RichText.class);
+      WXSDKEngine.registerComponent("richtext", RichText.class);
       WXSDKEngine.registerModule("render", RenderModule.class);
       WXSDKEngine.registerModule("event", WXEventModule.class);
       WXSDKEngine.registerModule("syncTest", SyncTestModule.class);
@@ -103,7 +99,6 @@ public void onCreate() {
 
       WXSDKEngine.registerModule("wsonTest", WXWsonTestModule.class);
 
-      RenderSDK.getInstance().setApplication(this).setImageAdapter(new PicassoImageAdapter()).init();
 
       /**
        * override default image tag
@@ -113,8 +108,6 @@ public void onCreate() {
       //Typeface nativeFont = Typeface.createFromAsset(getAssets(), "font/native_font.ttf");
       //WXEnvironment.setGlobalFontFamily("bolezhusun", nativeFont);
 
-      //RenderLog.openRenderLog(true);
-
     } catch (WXException e) {
       e.printStackTrace();
     }
diff --git a/android/playground/app/src/main/java/com/alibaba/weex/extend/render/PicassoImageAdapter.java b/android/playground/app/src/main/java/com/alibaba/weex/extend/render/PicassoImageAdapter.java
deleted file mode 100644
index e9f66cfe9c..0000000000
--- a/android/playground/app/src/main/java/com/alibaba/weex/extend/render/PicassoImageAdapter.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.alibaba.weex.extend.render;
-
-import android.graphics.Bitmap;
-import android.net.Uri;
-
-import com.squareup.picasso.Picasso;
-import com.taobao.weex.WXSDKInstance;
-import com.taobao.weex.WXSDKManager;
-import com.taobao.weex.adapter.URIAdapter;
-import com.taobao.weex.common.WXImageSharpen;
-import com.taobao.weex.common.WXImageStrategy;
-import com.taobao.weex.render.image.BitmapTarget;
-import com.taobao.weex.render.image.RenderImageAdapter;
-import com.taobao.weex.render.manager.RenderManager;
-import com.taobao.weex.render.view.DocumentView;
-import com.taobao.weex.ui.WXRenderManager;
-import com.taobao.weex.ui.component.WXComponent;
-import com.taobao.weex.ui.component.WXImage;
-
-/**
- * Created by furture on 2018/8/10.
- */
-
-public class PicassoImageAdapter extends RenderImageAdapter {
-    @Override
-    public BitmapTarget requestImageTarget(final DocumentView documentView, String ref, String url, int width, int height, boolean isPlaceholder) {
-        WXSDKInstance instance = (WXSDKInstance) documentView.getInstance();
-        if(instance != null){
-            url = instance.rewriteUri(Uri.parse(url), URIAdapter.IMAGE).toString();
-            WXImage image = (WXImage) WXSDKManager.getInstance().getWXRenderManager().getWXComponent(instance.getInstanceId(), ref);
-            if(image == null){
-                return null;
-            }
-
-            WXImageStrategy imageStrategy = new WXImageStrategy();
-            imageStrategy.isClipping = true;
-            WXImageSharpen imageSharpen = image.getAttrs().getImageSharpen();
-            imageStrategy.isSharpen = imageSharpen == WXImageSharpen.SHARPEN;
-            imageStrategy.blurRadius = 0;
-            imageStrategy.instanceId = image.getInstanceId();
-        }
-        final String imageUrl = url;
-        PicassoImageTarget loadImageTarget = new PicassoImageTarget(documentView, ref, url, isPlaceholder);
-        final PicassoImageTarget requestTarget  = loadImageTarget;
-        RenderManager.getInstance().getUiHandler().post(new Runnable() {
-            @Override
-            public void run() {
-                Picasso.with(documentView.getContext()).load(Uri.parse(imageUrl)).into(requestTarget);
-            }
-        });
-        return loadImageTarget;
-    }
-}
diff --git a/android/playground/app/src/main/java/com/alibaba/weex/extend/render/PicassoImageTarget.java b/android/playground/app/src/main/java/com/alibaba/weex/extend/render/PicassoImageTarget.java
deleted file mode 100644
index 12ae0c8d90..0000000000
--- a/android/playground/app/src/main/java/com/alibaba/weex/extend/render/PicassoImageTarget.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.alibaba.weex.extend.render;
-
-import android.graphics.Bitmap;
-import android.graphics.drawable.Drawable;
-import com.squareup.picasso.Picasso;
-import com.squareup.picasso.Target;
-import com.taobao.weex.render.image.BitmapTarget;
-import com.taobao.weex.render.image.RenderBitmapProcessor;
-import com.taobao.weex.render.view.DocumentView;
-
-/**
- * Created by furture on 2018/7/24.
- */
-
-public class PicassoImageTarget implements BitmapTarget, Target {
-    private Bitmap mBitmap;
-    private String ref;
-    private String url;
-    private boolean isPlaceholder;
-    private int loadingState;
-    private DocumentView documentView;
-
-    public PicassoImageTarget(DocumentView documentView, String ref, String url, boolean isPlaceholder) {
-        this.loadingState = LOADING;
-        this.documentView = documentView;
-        this.ref = ref;
-        this.url = url;
-        this.isPlaceholder = isPlaceholder;
-    }
-
-    @Override
-    public String getRef() {
-        return ref;
-    }
-
-    @Override
-    public String getUrl() {
-        return url;
-    }
-
-    @Override
-    public boolean isPlaceholder() {
-        return isPlaceholder;
-    }
-
-    @Override
-    public Bitmap getBitmap() {
-        return mBitmap;
-    }
-
-    @Override
-    public int getLoadingState() {
-        return loadingState;
-    }
-
-
-    @Override
-    public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
-        mBitmap = bitmap;
-        RenderBitmapProcessor.toRenderSupportBitmap(this);
-    }
-
-    @Override
-    public void onSupportedBitmap(Bitmap bitmap) {
-        mBitmap = bitmap;
-        loadingState = LOADING_SUCCESS;
-        documentView.onLoadImageTarget(this);
-    }
-
-    @Override
-    public void onBitmapFailed(Drawable errorDrawable) {
-        loadingState = LOADING_FAILED;
-        documentView.onLoadImageTarget(this);
-    }
-
-
-    @Override
-    public void onPrepareLoad(Drawable placeHolderDrawable) {
-
-    }
-}
diff --git a/android/sdk/libs/armeabi-v7a/libweexcore.so b/android/sdk/libs/armeabi-v7a/libweexcore.so
index 814905797b..c5a1c68d56 100644
Binary files a/android/sdk/libs/armeabi-v7a/libweexcore.so and b/android/sdk/libs/armeabi-v7a/libweexcore.so differ
diff --git a/android/sdk/libs/armeabi/libweexcore.so b/android/sdk/libs/armeabi/libweexcore.so
index 909711bba9..86e8bb37ba 100644
Binary files a/android/sdk/libs/armeabi/libweexcore.so and b/android/sdk/libs/armeabi/libweexcore.so differ
diff --git a/android/sdk/libs/x86/libweexcore.so b/android/sdk/libs/x86/libweexcore.so
index 73b4b569b9..669a14ffa1 100644
Binary files a/android/sdk/libs/x86/libweexcore.so and b/android/sdk/libs/x86/libweexcore.so differ
diff --git a/android/sdk/src/main/java/com/taobao/weex/WXSDKEngine.java b/android/sdk/src/main/java/com/taobao/weex/WXSDKEngine.java
index 31682e676f..18749b8cb8 100644
--- a/android/sdk/src/main/java/com/taobao/weex/WXSDKEngine.java
+++ b/android/sdk/src/main/java/com/taobao/weex/WXSDKEngine.java
@@ -40,7 +40,6 @@
 import com.taobao.weex.appfram.storage.WXStorageModule;
 import com.taobao.weex.appfram.websocket.WebSocketModule;
 import com.taobao.weex.bridge.ModuleFactory;
-import com.taobao.weex.bridge.WXBridge;
 import com.taobao.weex.bridge.WXBridgeManager;
 import com.taobao.weex.bridge.WXModuleManager;
 import com.taobao.weex.bridge.WXServiceManager;
@@ -50,9 +49,8 @@
 import com.taobao.weex.common.WXException;
 import com.taobao.weex.common.WXInstanceWrap;
 import com.taobao.weex.common.WXModule;
+import com.taobao.weex.common.WXPerformance;
 import com.taobao.weex.http.WXStreamModule;
-import com.taobao.weex.render.RenderSDK;
-import com.taobao.weex.render.event.SDKOnInitListener;
 import com.taobao.weex.ui.ExternalLoaderComponentHolder;
 import com.taobao.weex.ui.IExternalComponentGetter;
 import com.taobao.weex.ui.IExternalModuleGetter;
@@ -65,7 +63,6 @@
 import com.taobao.weex.ui.component.WXBasicComponentType;
 import com.taobao.weex.ui.component.WXComponent;
 import com.taobao.weex.ui.component.WXDiv;
-import com.taobao.weex.ui.component.document.WXDocumentComponent;
 import com.taobao.weex.ui.component.WXEmbed;
 import com.taobao.weex.ui.component.WXHeader;
 import com.taobao.weex.ui.component.WXImage;
@@ -180,32 +177,10 @@ public static void initialize(Application application,InitConfig config){
       registerApplicationOptions(application);
       WXEnvironment.sSDKInitInvokeTime = System.currentTimeMillis()-start;
       WXLogUtils.renderPerformanceLog("SDKInitInvokeTime", WXEnvironment.sSDKInitInvokeTime);
-      doRenderSwitchConfig();
       mIsInit = true;
     }
   }
 
-  private static void doRenderSwitchConfig(){
-    if(RenderSDK.getInstance().getSdkOnInitListener() != null){
-       return;
-    }
-    RenderSDK.getInstance().setSdkOnInitListener(new SDKOnInitListener() {
-      @Override
-      public void onInit(final boolean result) {
-        if(result){
-          WXBridgeManager.getInstance().post(new Runnable() {
-            @Override
-            public void run() {
-              if(WXBridgeManager.getInstance().getBridge() instanceof WXBridge){
-                ((WXBridge) WXBridgeManager.getInstance().getBridge()).setSegmentSwitch(result);
-              }
-            }
-          });
-        }
-      }
-    });
-  }
-
   private static void registerApplicationOptions(final Application application) {
 
     if (application == null) {
@@ -303,12 +278,6 @@ private static void register() {
               WXBasicComponentType.HEADER,
               WXBasicComponentType.FOOTER
       );
-      registerComponent(
-              new SimpleComponentHolder(
-                      WXDocumentComponent.class,
-                      new WXDocumentComponent.Ceator()
-              ),
-              false, WXDocumentComponent.DOCUMENT_COMPONENT);
       registerComponent(
               new SimpleComponentHolder(
                       WXImage.class,
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 8aa81779a5..386d0c19b6 100644
--- a/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
+++ b/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
@@ -185,8 +185,6 @@
 
   private List<String> mLayerOverFlowListeners;
 
-  private boolean hasDocumentSegment;
-
   public List<String> getLayerOverFlowListeners() {
     return mLayerOverFlowListeners;
   }
@@ -2171,12 +2169,4 @@ public void addInstanceOnFireEventInterceptor(InstanceOnFireEventInterceptor ins
       getInstanceOnFireEventInterceptorList().add(instanceOnFireEventInterceptor);
     }
   }
-
-  public boolean isHasDocumentSegment() {
-    return hasDocumentSegment;
-  }
-
-  public void setHasDocumentSegment(boolean hasDocumentSegment) {
-    this.hasDocumentSegment = hasDocumentSegment;
-  }
 }
diff --git a/android/sdk/src/main/java/com/taobao/weex/adapter/IWXUserTrackAdapter.java b/android/sdk/src/main/java/com/taobao/weex/adapter/IWXUserTrackAdapter.java
index 74a3dd7f54..ec6be03edf 100644
--- a/android/sdk/src/main/java/com/taobao/weex/adapter/IWXUserTrackAdapter.java
+++ b/android/sdk/src/main/java/com/taobao/weex/adapter/IWXUserTrackAdapter.java
@@ -51,7 +51,5 @@
   String MONITOR_ARG = "arg";
   String MONITOR_ERROR_MSG = "errMsg";
 
-  String WEEX_RENDER = "weexrender";
-
   void commit(Context context, String eventId, String type, WXPerformance perf, Map<String, Serializable> params);
 }
diff --git a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java
index 57a247d9e1..a60917e093 100644
--- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java
+++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java
@@ -104,7 +104,6 @@
   private native void nativeRegisterCoreEnv(String key, String value);
 
   private native void nativeResetWXBridge(Object bridge, String className);
-  private native void nativeSetSegmentSwitch(boolean segmentSwitch);
 
   /**
    * update global config,
@@ -657,11 +656,6 @@ public void registerCoreEnv(String key, String value) {
     nativeRegisterCoreEnv(key, value);
   }
 
-
-  public void setSegmentSwitch(boolean segmentSwitch) {
-    nativeSetSegmentSwitch(segmentSwitch);
-  }
-
   @CalledByNative
   public void reportNativeInitStatus(String statusCode, String errorMsg) {
     if (WXErrorCode.WX_JS_FRAMEWORK_INIT_SINGLE_PROCESS_SUCCESS.getErrorCode().equals(statusCode)
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 acd676fb7a..32a96123ff 100644
--- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
+++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
@@ -479,21 +479,6 @@ public void postDelay(Runnable r,long delayMillis){
     mJSHandler.postDelayed(WXThread.secure(r),delayMillis);
   }
 
-
-  public void postAtFrontOfQueue(Runnable r){
-    if (mJSHandler == null) {
-      return;
-    }
-    mJSHandler.postAtFrontOfQueue(r);
-  }
-
-  public void removeCallback(Runnable r){
-    if (mJSHandler == null) {
-      return;
-    }
-    mJSHandler.removeCallbacks(r);
-  }
-
   void setTimeout(String callbackId, String time) {
     Message message = Message.obtain();
     message.what = WXJSBridgeMsgType.SET_TIMEOUT;
@@ -2448,8 +2433,7 @@ public int callAddElement(String pageId, String componentType, String ref, int i
               .append(", parentRef:").append(parentRef)
               .append(", styles:").append(styles)
               .append(", attributes:").append(attributes)
-              .append(", events:").append(events)
-              .append(", willLayout").append(willLayout);
+              .append(", events:").append(events);
       WXLogUtils.d(mLodBuilder.substring(0));
       mLodBuilder.setLength(0);
     }
@@ -3025,10 +3009,4 @@ private void onJsFrameWorkInitSuccees() {
     }
     mWeexCoreEnvOptions.clear();
   }
-
-
-  public IWXBridge getBridge(){
-    return mWXBridge;
-  }
-
 }
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 7f300150f1..82f853fcd2 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
@@ -78,7 +78,6 @@ public WXAttr(@NonNull Map<String,Object> standardMap) {
     attr = standardMap;
   }
 
-  @Deprecated
   public WXAttr(@NonNull Map<String,Object> standardMap, int extra){
     attr = standardMap;
   }
@@ -435,10 +434,6 @@ public Object put(String key, Object value) {
     return attr.put(key,value);
   }
 
-  public void putAllDirect(Map<? extends String, ?> map) {
-    this.attr.putAll(map);
-  }
-
   @Override
   public void putAll(Map<? extends String, ?> map) {
     //this.attr.putAll(map);
diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/WXStyle.java b/android/sdk/src/main/java/com/taobao/weex/dom/WXStyle.java
index dc87b58f1d..a401090370 100644
--- a/android/sdk/src/main/java/com/taobao/weex/dom/WXStyle.java
+++ b/android/sdk/src/main/java/com/taobao/weex/dom/WXStyle.java
@@ -64,7 +64,6 @@ public WXStyle(){
     mStyles = new ArrayMap<>();
   }
 
-  @Deprecated
   public WXStyle(Map<String, Object> styles){
     this.mStyles = styles;
     processPesudoClasses(this.mStyles);
@@ -523,11 +522,6 @@ private boolean addBindingStyleIfStatement(String key, Object value) {
     return mBindingStyle;
   }
 
-  @NonNull
-  public Map<String, Object> getStyles() {
-    return mStyles;
-  }
-
   @Override
   public WXStyle clone(){
     WXStyle style = new WXStyle();
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/RenderSDK.java b/android/sdk/src/main/java/com/taobao/weex/render/RenderSDK.java
deleted file mode 100644
index 2c7c9ec8f5..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/RenderSDK.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render;
-
-import android.app.Application;
-import android.content.Context;
-import android.text.TextUtils;
-import android.util.DisplayMetrics;
-
-import com.taobao.weex.render.bridge.RenderBridge;
-import com.taobao.weex.render.download.DownloadUtils;
-import com.taobao.weex.render.event.SDKOnInitListener;
-import com.taobao.weex.render.image.RenderImageAdapter;
-import com.taobao.weex.render.lifecycle.RenderActivityLifecycleCallback;
-import com.taobao.weex.render.manager.RenderManager;
-import com.taobao.weex.render.threads.GpuThread;
-import com.taobao.weex.render.threads.IoThread;
-import java.io.File;
-
-/**
- * Created by furture on 2018/8/31.
- */
-
-public class RenderSDK {
-
-    private static final String WEEX_RENDER = "weexrender";
-    private static final String WEEX_RENDER_URL =  "https://gw.alicdn.com/bao/uploaded/TB1TgSAcrvpK1RjSZFqXXcXUVXa.zip?spm=a1z3i.a4.0.0.7d68eb1dNJtnCa&file=TB1TgSAcrvpK1RjSZFqXXcXUVXa.zip";
-    private static final String WEEX_RENDER_SO_MD5 = "5ae1ca197e10bad886e1fac093975c26";
-
-    private Application application;
-    private RenderImageAdapter imageAdapter;
-    private boolean isInited = false;
-    private RenderActivityLifecycleCallback renderActivityLifecycleCallback;
-    private SDKOnInitListener sdkOnInitListener;
-    private static RenderSDK renderSDK;
-
-    private RenderSDK(){
-        renderActivityLifecycleCallback = new RenderActivityLifecycleCallback();
-    }
-
-    public static RenderSDK getInstance(){
-        if(renderSDK == null){
-            synchronized (RenderSDK.class){
-                if(renderSDK == null){
-                    renderSDK = new RenderSDK();
-                }
-            }
-        }
-        return renderSDK;
-    }
-
-
-    public Application getApplication() {
-        return application;
-    }
-
-    public RenderSDK setApplication(Application application) {
-        this.application = application;
-        return this;
-    }
-
-    public RenderImageAdapter getImageAdapter() {
-        return imageAdapter;
-    }
-
-    public RenderSDK setImageAdapter(RenderImageAdapter imageAdapter) {
-        this.imageAdapter = imageAdapter;
-        return this;
-    }
-
-    public RenderSDK setSdkOnInitListener(SDKOnInitListener sdkOnInitListener){
-        this.sdkOnInitListener = sdkOnInitListener;
-       return this;
-    }
-
-    public SDKOnInitListener getSdkOnInitListener(){
-        return sdkOnInitListener;
-    }
-
-    public void init(){
-        RenderManager.getInstance().getGpuHandler().post(new Runnable() {
-            @Override
-            public void run() {
-                initSdk();
-            }
-        });
-    }
-
-
-    public boolean isInited(){
-        return isInited;
-    }
-
-
-    private void initSdk(){
-        if(!isInited){
-            synchronized (this){
-                if(isInited){
-                    return;
-                }
-                if(Thread.currentThread() != GpuThread.getThread()){
-                    throw new RuntimeException("RenderSDK InitSdk Must be called on GPU Thread");
-                }
-                if(application == null){
-                    throw new RuntimeException("RenderSDK setApplication Should be called When Application Init");
-                }
-                application.unregisterActivityLifecycleCallbacks(renderActivityLifecycleCallback);
-                application.registerActivityLifecycleCallbacks(renderActivityLifecycleCallback);
-                try {
-                    boolean loadSO = loadSoFromNetwork(application);
-                    if(!loadSO){
-                        System.loadLibrary(WEEX_RENDER);
-                    }
-                    DisplayMetrics displayMetrics = application.getResources().getDisplayMetrics();
-                    isInited = RenderBridge.getInstance().initSDK(displayMetrics.widthPixels, displayMetrics.heightPixels, displayMetrics.density);
-                    if(sdkOnInitListener != null){
-                        sdkOnInitListener.onInit(isInited);
-                    }
-                }catch (Throwable e){
-                    if(sdkOnInitListener != null){
-                        sdkOnInitListener.onInit(false);
-                    }
-                }
-                sdkOnInitListener = null;
-            }
-        }
-    }
-
-    private boolean loadSoFromNetwork(Context context){
-        if(!TextUtils.isEmpty(WEEX_RENDER_URL)){
-            String path = context.getFilesDir().getPath();
-            String zipFile = path + "/lib/libweexrender.zip";
-            String soPath = path + "/lib/libweexrender.so";
-            File soFile = new File(soPath);
-
-            if(soFile.exists()){
-                String soMd5 = DownloadUtils.fileMd5(soPath);
-                if(!soMd5.equals(WEEX_RENDER_SO_MD5)){
-                    soFile.delete();
-                }
-            }
-            if(!soFile.exists()){
-                if(DownloadUtils.download(WEEX_RENDER_URL,  zipFile)){
-                    DownloadUtils.unzip(zipFile, path + "/lib/");
-                    DownloadUtils.deleteFile(zipFile);
-                }
-            }
-
-            if(soFile.exists()){
-                String soMd5 = DownloadUtils.fileMd5(soPath);
-                if(soMd5.equals(WEEX_RENDER_SO_MD5)){
-                    System.load(soFile.getAbsolutePath());
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-
-    public void destory(){
-        try{
-            application.unregisterActivityLifecycleCallbacks(renderActivityLifecycleCallback);
-            GpuThread.getThread().quit();
-            IoThread.getThread().quit();
-        }catch (Exception e){}
-    }
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/accessibility/AccessibilityConstants.java b/android/sdk/src/main/java/com/taobao/weex/render/accessibility/AccessibilityConstants.java
deleted file mode 100644
index 868da54fa0..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/accessibility/AccessibilityConstants.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.accessibility;
-
-/**
- * Created by furture on 2018/8/22.
- */
-
-public interface AccessibilityConstants {
-
-    String ARIA_LABEL = "ariaLabel";
-    String ARIA_HIDDEN = "ariaHidden";
-    String ROLE = "role";
-
-
-    int EVENT_TYPE_ACCESSIBILITY = 16;
-    String EVENT_CLICK = "click";
-
-    String TAG_TEXT = "text";
-    String TAG_IMAGE = "image";
-    String TAG_IMG = "img";
-    String TAG_A = "a";
-
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/accessibility/DocumentAccessibilityHelper.java b/android/sdk/src/main/java/com/taobao/weex/render/accessibility/DocumentAccessibilityHelper.java
deleted file mode 100644
index 15ffc51d0a..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/accessibility/DocumentAccessibilityHelper.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.accessibility;
-
-import android.graphics.Rect;
-import android.os.Bundle;
-import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat;
-import android.support.v4.widget.ExploreByTouchHelper;
-import android.text.TextUtils;
-import android.view.accessibility.AccessibilityNodeInfo;
-import android.widget.Button;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import com.taobao.weex.render.view.DocumentTextureView;
-
-import java.util.List;
-
-/**
- * Created by furture on 2018/8/21.
- */
-
-public class DocumentAccessibilityHelper extends ExploreByTouchHelper {
-
-    private DocumentTextureView documentTextureView;
-    private DocumentAccessibilityTask documentAccessibilityTask;
-
-    public DocumentAccessibilityHelper(DocumentTextureView documentTextureView) {
-        super(documentTextureView);
-        this.documentTextureView = documentTextureView;
-    }
-
-    @Override
-    protected int getVirtualViewAt(float x, float y) {
-        if(!documentTextureView.hasDocumentView()){
-            return ExploreByTouchHelper.HOST_ID;
-        }
-        this.documentAccessibilityTask = new DocumentAccessibilityTask(documentTextureView.getDocumentView(),0, 0);
-        if(!documentAccessibilityTask.updatePoint((int)x, (int)y)){
-            return documentAccessibilityTask.getViewId();
-        }
-        documentAccessibilityTask.resetCountDown();
-        documentTextureView.getTaskQueue().addTask(documentAccessibilityTask);
-        documentAccessibilityTask.waitComplete();
-        return documentAccessibilityTask.getViewId();
-    }
-
-    @Override
-    protected void getVisibleVirtualViews(List<Integer> virtualViewIds) {
-        if(documentAccessibilityTask != null){
-            virtualViewIds.add(documentAccessibilityTask.getViewId());
-        }
-    }
-
-
-    @Override
-    protected void onPopulateNodeForVirtualView(int virtualViewId, AccessibilityNodeInfoCompat node) {
-        node.setClassName(TextView.class.getName());
-        if(documentAccessibilityTask != null
-                && virtualViewId == documentAccessibilityTask.getViewId()){
-            String type = documentAccessibilityTask.getType();
-            if(AccessibilityConstants.TAG_IMAGE.equals(type) || AccessibilityConstants.TAG_IMG.equals(type)){
-                node.setClassName(ImageView.class.getName());
-            }else if(AccessibilityConstants.TAG_A.equals(type)){
-                node.setClassName(Button.class.getName());
-            }else {
-                node.setClassName(TextView.class.getName());
-            }
-            if(!TextUtils.isEmpty(documentAccessibilityTask.getRole())){
-                node.setRoleDescription(documentAccessibilityTask.getRole());
-            }
-            node.setText( documentAccessibilityTask.getContentDescription());
-            node.setContentDescription( documentAccessibilityTask.getContentDescription());
-            node.setBoundsInParent(documentAccessibilityTask.getBounds());
-            if(documentAccessibilityTask.hasClick()){
-                node.addAction(AccessibilityNodeInfo.ACTION_CLICK);
-                node.setClassName(Button.class.getName());
-            }
-        }else{
-            node.setBoundsInParent(new Rect(0,0, documentTextureView.getDocumentView().getDocumentWidth(),
-                     documentTextureView.getDocumentView().getDocumentHeight()));
-            node.setContentDescription("");
-        }
-        node.addAction(AccessibilityNodeInfo.ACTION_FOCUS);
-    }
-
-
-    @Override
-    protected boolean onPerformActionForVirtualView(int virtualViewId, int action, Bundle arguments) {
-        return false;
-    }
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/accessibility/DocumentAccessibilityTask.java b/android/sdk/src/main/java/com/taobao/weex/render/accessibility/DocumentAccessibilityTask.java
deleted file mode 100644
index 99647c3e95..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/accessibility/DocumentAccessibilityTask.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.accessibility;
-
-import android.graphics.Rect;
-import android.support.v4.widget.ExploreByTouchHelper;
-import android.text.TextUtils;
-
-import com.taobao.weex.render.bridge.RenderBridge;
-import com.taobao.weex.render.task.GLTask;
-import com.taobao.weex.render.view.DocumentView;
-
-import java.util.concurrent.CountDownLatch;
-
-/**
- * Created by furture on 2018/8/21.
- */
-
-public class DocumentAccessibilityTask extends GLTask {
-
-
-    private int x;
-    private int y;
-    private String ref;
-    private String type;
-    private String role;
-    private String contentDescription;
-    private boolean hasClick;
-    private Rect bounds;
-    private CountDownLatch countDownLatch;
-
-    public DocumentAccessibilityTask(DocumentView documentView, int x, int y) {
-        super(documentView);
-        this.x = x;
-        this.y = y;
-        this.bounds = new Rect();
-    }
-
-
-    @Override
-    public void run() {
-        long ptr = getDocumentView().getNativeDocument();
-        if(ptr == 0){
-            countDownLatch.countDown();
-            return;
-        }
-        ref = getDocumentView().hitTest(AccessibilityConstants.EVENT_TYPE_ACCESSIBILITY, x, y);
-        if(!TextUtils.isEmpty(ref)){
-            type = RenderBridge.getInstance().getNodeType(ptr, ref);
-            role = RenderBridge.getInstance().getNodeAttr(ptr, ref, AccessibilityConstants.ROLE);
-            contentDescription = RenderBridge.getInstance().getNodeAttr(ptr, ref, AccessibilityConstants.ARIA_LABEL);
-            int left = RenderBridge.getInstance().getBlockLayout(ptr, ref, 0);
-            int top = RenderBridge.getInstance().getBlockLayout(ptr, ref, 1);
-            int width = RenderBridge.getInstance().getBlockLayout(ptr, ref, 2);
-            int height = RenderBridge.getInstance().getBlockLayout(ptr, ref, 3);
-            this.bounds.set(left, top, left + width, top + height);
-            hasClick = RenderBridge.getInstance().nodeContainsEvent(ptr, ref, AccessibilityConstants.EVENT_CLICK);
-        }
-        countDownLatch.countDown();
-    }
-
-
-    public boolean updatePoint(int x, int y){
-        if(this.x != x || this.y != y){
-            this.x = x;
-            this.y = y;
-            return true;
-        }
-        return false;
-    }
-
-    public int getViewId(){
-        if(TextUtils.isEmpty(ref) || TextUtils.isEmpty(contentDescription)){
-            return ExploreByTouchHelper.INVALID_ID;
-        }
-        if(bounds.height() <= 0 || bounds.width() <= 0){
-            return ExploreByTouchHelper.INVALID_ID;
-        }
-        return ref.hashCode();
-    }
-
-    public String getRole() {
-        return role;
-    }
-
-    public String getContentDescription() {
-        if(contentDescription == null){
-            contentDescription = "none content";
-        }
-        return contentDescription;
-    }
-
-    public Rect getBounds() {
-        return bounds;
-    }
-
-    public String getType() {
-        return type;
-    }
-
-    public boolean hasClick() {
-        return hasClick;
-    }
-
-    public void waitComplete(){
-        try {
-            countDownLatch.await();
-        } catch (InterruptedException e) {
-            e.printStackTrace();
-        }
-    }
-
-    public void resetCountDown() {
-        this.countDownLatch = new CountDownLatch(1);
-    }
-
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/action/Action.java b/android/sdk/src/main/java/com/taobao/weex/render/action/Action.java
deleted file mode 100644
index d281f4aeaa..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/action/Action.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.action;
-
-import com.taobao.weex.render.view.DocumentView;
-
-/**
- * Created by furture on 2018/8/8.
- */
-
-public abstract class Action implements Runnable {
-
-    private DocumentView documentView;
-
-    public Action(DocumentView documentView) {
-        this.documentView = documentView;
-    }
-
-    public DocumentView getDocumentView() {
-        return documentView;
-    }
-
-    @Override
-    public void run() {
-        if(documentView.isDestroy()){
-            return;
-        }
-        execute();
-    }
-
-    protected abstract  void execute();
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/action/AddElementAction.java b/android/sdk/src/main/java/com/taobao/weex/render/action/AddElementAction.java
deleted file mode 100644
index dc701af5ac..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/action/AddElementAction.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.action;
-
-import com.taobao.weex.render.bridge.RenderBridge;
-import com.taobao.weex.render.view.DocumentView;
-
-import java.util.Collection;
-import java.util.Map;
-
-/**
- * Created by furture on 2018/8/8.
- */
-
-public class AddElementAction extends  Action {
-
-    private String ref;
-    private String componentType;
-    private String parentRef;
-    private int index;
-    private Map<String, String> style;
-    private Map<String, String> attrs;
-    private Collection<String> events;
-
-    public AddElementAction(DocumentView documentView, String ref, String componentType, String parentRef, int index, Map<String, String> style, Map<String, String> attrs, Collection<String> events) {
-        super(documentView);
-        this.ref = ref;
-        this.componentType = componentType;
-        this.parentRef = parentRef;
-        this.index = index;
-        this.style = style;
-        this.attrs = attrs;
-        this.events = events;
-    }
-
-
-
-
-
-    @Override
-    protected void execute() {
-        RenderBridge.getInstance().actionAddElement(getDocumentView().getNativeDocument(), ref,  componentType, parentRef, index, style, attrs, events);
-        getDocumentView().requestLayout();
-    }
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/action/AddEventAction.java b/android/sdk/src/main/java/com/taobao/weex/render/action/AddEventAction.java
deleted file mode 100644
index 9d5e4f0f41..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/action/AddEventAction.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.action;
-
-import com.taobao.weex.render.bridge.RenderBridge;
-import com.taobao.weex.render.view.DocumentView;
-
-/**
- * Created by furture on 2018/8/15.
- */
-
-public class AddEventAction extends  Action {
-
-    private String ref;
-    private String event;
-
-
-    public AddEventAction(DocumentView documentView, String ref, String event) {
-        super(documentView);
-        this.ref = ref;
-        this.event = event;
-    }
-
-    @Override
-    protected void execute() {
-        if(getDocumentView().isDestroy()){
-            return;
-        }
-        RenderBridge.getInstance().actionAddEvent(getDocumentView().getNativeDocument(), ref, event);
-    }
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/action/CreateBodyAction.java b/android/sdk/src/main/java/com/taobao/weex/render/action/CreateBodyAction.java
deleted file mode 100644
index c660c470d6..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/action/CreateBodyAction.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.action;
-
-import com.taobao.weex.render.bridge.RenderBridge;
-import com.taobao.weex.render.view.DocumentView;
-
-import java.util.Collection;
-import java.util.Map;
-
-/**
- * Created by furture on 2018/8/8.
- */
-
-public class CreateBodyAction extends  Action {
-
-    private String ref;
-    private Map<String, String> style;
-    private Map<String, String> attrs;
-    private Collection<String> events;
-
-    public CreateBodyAction(DocumentView documentView, String ref, Map<String, String> style, Map<String, String> attrs, Collection<String> events) {
-        super(documentView);
-        this.ref = ref;
-        this.style = style;
-        this.attrs = attrs;
-        this.events = events;
-    }
-    @Override
-    protected void execute() {
-        RenderBridge.getInstance().createBody(getDocumentView().getNativeDocument(), ref, style, attrs, events);
-        getDocumentView().setHasCreateBody(true);
-        getDocumentView().requestLayout();
-    }
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/action/MoveElementAction.java b/android/sdk/src/main/java/com/taobao/weex/render/action/MoveElementAction.java
deleted file mode 100644
index 1b5e5001b1..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/action/MoveElementAction.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.action;
-
-import com.taobao.weex.render.bridge.RenderBridge;
-import com.taobao.weex.render.view.DocumentView;
-
-/**
- * Created by furture on 2018/8/8.
- */
-
-public class MoveElementAction extends  Action {
-
-    private String ref;
-    private String parentRef;
-    private int index;
-
-    public MoveElementAction(DocumentView documentView, String ref, String parentRef, int index) {
-        super(documentView);
-        this.ref = ref;
-        this.parentRef = parentRef;
-        this.index = index;
-    }
-
-    @Override
-    protected void execute() {
-        RenderBridge.getInstance().actionMoveElement(getDocumentView().getNativeDocument(), ref, parentRef, index);
-        getDocumentView().requestLayout();
-    }
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/action/RemoveElementAction.java b/android/sdk/src/main/java/com/taobao/weex/render/action/RemoveElementAction.java
deleted file mode 100644
index 232717dcbe..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/action/RemoveElementAction.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.action;
-
-import com.taobao.weex.render.bridge.RenderBridge;
-import com.taobao.weex.render.view.DocumentView;
-
-/**
- * Created by furture on 2018/8/8.
- */
-public class RemoveElementAction extends  Action {
-
-    private String ref;
-
-    public RemoveElementAction(DocumentView documentView, String ref) {
-        super(documentView);
-        this.ref = ref;
-    }
-
-    @Override
-    protected void execute() {
-        RenderBridge.getInstance().actionRemoveElement(getDocumentView().getNativeDocument(), ref);
-        getDocumentView().requestLayout();
-    }
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/action/RemoveEventAction.java b/android/sdk/src/main/java/com/taobao/weex/render/action/RemoveEventAction.java
deleted file mode 100644
index c2efee2ff7..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/action/RemoveEventAction.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.action;
-
-import com.taobao.weex.render.bridge.RenderBridge;
-import com.taobao.weex.render.view.DocumentView;
-
-/**
- * Created by furture on 2018/8/15.
- */
-
-public class RemoveEventAction extends  Action {
-
-    private String ref;
-    private String event;
-
-
-    public RemoveEventAction(DocumentView documentView, String ref, String event) {
-        super(documentView);
-        this.ref = ref;
-        this.event = event;
-    }
-
-    @Override
-    protected void execute() {
-        RenderBridge.getInstance().actionRemoveEvent(getDocumentView().getNativeDocument(), ref, event);
-    }
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/action/UpdateAttrsAction.java b/android/sdk/src/main/java/com/taobao/weex/render/action/UpdateAttrsAction.java
deleted file mode 100644
index 039a77d5dd..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/action/UpdateAttrsAction.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.action;
-
-import com.taobao.weex.render.bridge.RenderBridge;
-import com.taobao.weex.render.view.DocumentView;
-
-import java.util.Map;
-
-/**
- * Created by furture on 2018/8/11.
- */
-
-public class UpdateAttrsAction extends Action {
-
-    private String ref;
-    private Map<String, String> attrs;
-
-    public UpdateAttrsAction(DocumentView documentView, String ref, Map<String, String> attrs) {
-        super(documentView);
-        this.ref = ref;
-        this.attrs = attrs;
-    }
-
-
-    @Override
-    protected void execute() {
-        RenderBridge.getInstance().actionUpdateAttrs(getDocumentView().getNativeDocument(), ref, attrs);
-        getDocumentView().requestLayout();
-    }
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/action/UpdateStylesAction.java b/android/sdk/src/main/java/com/taobao/weex/render/action/UpdateStylesAction.java
deleted file mode 100644
index 728c599410..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/action/UpdateStylesAction.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.action;
-
-import com.taobao.weex.render.bridge.RenderBridge;
-import com.taobao.weex.render.view.DocumentView;
-
-import java.util.Map;
-
-/**
- * Created by furture on 2018/8/11.
- */
-
-public class UpdateStylesAction extends  Action {
-
-    private String ref;
-    private Map<String, String> styles;
-
-    public UpdateStylesAction(DocumentView documentView, String ref, Map<String, String> styles) {
-        super(documentView);
-        this.ref = ref;
-        this.styles = styles;
-    }
-
-
-    @Override
-    protected void execute() {
-        RenderBridge.getInstance().actionUpdateStyles(getDocumentView().getNativeDocument(), ref, styles);
-        getDocumentView().requestLayout();
-    }
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/bridge/RenderBridge.java b/android/sdk/src/main/java/com/taobao/weex/render/bridge/RenderBridge.java
deleted file mode 100644
index 2161afcaa6..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/bridge/RenderBridge.java
+++ /dev/null
@@ -1,324 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.bridge;
-
-import android.graphics.Bitmap;
-import android.os.Build;
-import android.text.TextUtils;
-import android.view.Surface;
-
-import com.taobao.weex.render.RenderSDK;
-import com.taobao.weex.render.image.BitmapTarget;
-import com.taobao.weex.render.image.RenderBitmapImageCache;
-import com.taobao.weex.render.manager.RenderManager;
-import com.taobao.weex.render.threads.GpuThread;
-import com.taobao.weex.render.view.DocumentView;
-
-import java.io.UnsupportedEncodingException;
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Created by furture on 2018/7/24.
- */
-
-public class RenderBridge {
-
-    private static final RenderBridge renderBridge = new RenderBridge();
-
-    public static RenderBridge getInstance(){
-        return renderBridge;
-    }
-
-    /**
-     * @param documentKey documentView key
-     * @param url imageUrl
-     * @param width content image layout width
-     * @param height content image layout height
-     * the method is called in gpu thread
-     * */
-    public static Bitmap getImage(long documentKey, String ref, String url, int width, int height, boolean isPlaceholder){
-        return RenderBridge.getInstance().getBitmap(documentKey, ref, url, width, height, isPlaceholder);
-    }
-
-
-    public static boolean isImagePremultiplied(Bitmap bitmap){
-        if(bitmap == null){
-            return true;
-        }
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
-            return bitmap.isPremultiplied();
-        }
-        return  true;
-    }
-
-    public boolean initSDK(int screenWidth, int screenHeight, float density){
-        return nativeInitSDK(screenWidth, screenHeight, density);
-    }
-
-
-    public long initOpenGLRender(Surface surface, int width, int height){
-        return nativeInitOpenGLRender(surface, width, height);
-    }
-
-    public void destroyOpenGLRender(long ptr, Surface surface){
-         nativeDestroyOpenGLRender(ptr, surface);
-    }
-
-
-    public String actionEvent(long mNativeDocument, int type, int x, int y) {
-        return nativeHandleEvent(mNativeDocument, type, x, y);
-    }
-
-
-
-    public long createDocument(long key) {
-        return nativeCreateDocument(key);
-    }
-
-    public boolean invalidate(long mNativeDocument, long mRender) {
-        return nativeInvalidate(mNativeDocument, mRender);
-    }
-
-
-    public void layoutIfNeed(long ptr){
-        nativeLayoutIfNeed(ptr);
-    }
-
-    public void renderClearBuffer(long openGLRenderPtr) {
-         nativeClearRenderBuffer(openGLRenderPtr);
-    }
-
-    public void renderSizeChanged(long openGLRenderPtr, int width, int height) {
-        nativeRenderSizeChanged(openGLRenderPtr, width, height);
-    }
-
-    public void renderSwap(long openGLRenderPtr) {
-        nativeRenderSwap(openGLRenderPtr);
-    }
-
-
-
-    public void destroyDocument(long mNativeDocument) {
-        nativeDestroyDocument(mNativeDocument);
-    }
-
-    public void createBody(long ptr, String ref, Map<String,String> styles, Map<String,String> attrs, Collection<String> events){
-        nativeCreateBody(ptr, ref, toNativeMap(styles), toNativeMap(attrs), toNativeSet(events));
-    }
-
-    public void actionAddElement(long ptr, String ref, String type, String parentRef, int index, Map<String,String> styles, Map<String,String> attrs, Collection<String> events){
-        nativeActionAddElement(ptr, ref, type, parentRef, index, toNativeMap(styles), toNativeMap(attrs), toNativeSet(events));
-    }
-
-    public void actionUpdateAttrs(long nativeDocument, String ref, Map<String, String> attrs) {
-        nativeActionUpdateAttrs(nativeDocument, ref, toNativeMap(attrs));
-    }
-
-    public void actionUpdateStyles(long nativeDocument, String ref, Map<String, String> styles) {
-        nativeActionUpdateStyles(nativeDocument, ref, toNativeMap(styles));
-    }
-
-    public void actionAddEvent(long nativeDocument, String ref, String event) {
-        if(TextUtils.isEmpty(event) || TextUtils.isEmpty(ref)){
-            return;
-        }
-        nativeActionAddEvent(nativeDocument, ref, event);
-    }
-
-    public void actionRemoveEvent(long nativeDocument, String ref, String event) {
-        if(TextUtils.isEmpty(event) || TextUtils.isEmpty(ref)){
-            return;
-        }
-        nativeActionRemoveEvent(nativeDocument, ref, event);
-    }
-
-
-    public void actionRemoveElement(long nativeDocument, String ref) {
-        nativeActionRemoveElement(nativeDocument, ref);
-    }
-
-
-    public void actionMoveElement(long nativeDocument, String ref, String parentRef, int index){
-        nativeActionMoveElement(nativeDocument, ref, parentRef, index);
-    }
-
-    public void actionRefreshFont(final long nativeDocument, final String fontFamilyName){
-        if(Thread.currentThread() != GpuThread.getThread()){
-            RenderManager.getInstance().getGpuHandler().post(new Runnable() {
-                @Override
-                public void run() {
-                    actionRefreshFont(nativeDocument, fontFamilyName);
-                }
-            });
-            return;
-        }
-        nativeRefreshFont(nativeDocument, fontFamilyName);
-    }
-
-    public void addFont(final String fontFamilyName, final String fontPath){
-        if(Thread.currentThread() != GpuThread.getThread()){
-            RenderManager.getInstance().getGpuHandler().post(new Runnable() {
-                @Override
-                public void run() {
-                    addFont(fontFamilyName, fontPath);
-                }
-            });
-            return;
-        }
-        nativeAddFont(fontFamilyName, fontPath);
-    }
-
-
-    public boolean hasFont(final String fontFamilyName, final String fontPath){
-        return nativeHasFont(fontFamilyName, fontPath);
-    }
-
-
-
-
-    public int documentWidth(long ptr){
-        return nativeDocumentWidth(ptr);
-    }
-    public int documentHeight(long ptr){
-        return nativeDocumentHeight(ptr);
-    }
-
-    public int getBlockLayout(long ptr, String ref, int edge){
-        return nativeGetBlockLayout(ptr, ref, edge);
-    }
-
-    public String getNodeAttr(long ptr, String ref, String key){
-        byte [] bts =  nativeGetNodeAttr(ptr, ref, key);
-        if(bts == null){
-            return null;
-        }
-        try {
-            return new String(bts, "UTF-8");
-        } catch (UnsupportedEncodingException e) {
-            return null;
-        }
-    }
-
-    public String getNodeType(long ptr, String ref){
-        return nativeGetNodeType(ptr, ref);
-    }
-
-    public boolean nodeContainsEvent(long ptr, String ref, String event){
-        return nativeNodeContainsEvent(ptr, ref, event);
-    }
-
-    public long toNativeMap(Map<String,String> styles){
-        long map = nativeNewMap();
-        if(styles != null){
-            Set<Map.Entry<String,String>> entrySet = styles.entrySet();
-            for(Map.Entry<String,String> entry : entrySet){
-                if(entry.getValue() == null){
-                    continue;
-                }
-                nativeMapPut(map, entry.getKey(), entry.getValue());
-            }
-        }
-        return map;
-    }
-
-    public long toNativeSet(Collection<String> events){
-        long set = nativeNewSet();
-        if(events != null){
-            for(String envent : events){
-                nativeSetAdd(set, envent);
-            }
-        }
-        return set;
-    }
-
-
-
-
-    public Bitmap getBitmap(long documentKey, String ref, final String url, int width, int height, boolean isPlaceholder){
-        if(TextUtils.isEmpty(url)){
-            return null;
-        }
-        if(RenderSDK.getInstance().getImageAdapter() == null){
-            return null;
-        }
-        DocumentView documentView = RenderManager.getInstance().getDocument(documentKey);
-        if(documentView == null || documentView.getOpenGLRender() == null){
-            return null;
-        }
-        String imageKey = RenderSDK.getInstance().getImageAdapter().genImageKey(documentView, ref, url, width, height, isPlaceholder);
-        BitmapTarget target = documentView.getImageTargetMap().get(imageKey);
-        if(target == null){
-            target = RenderBitmapImageCache.getInstance().getImageTarget(documentKey, imageKey);
-            if(target != null){
-                documentView.getImageTargetMap().put(imageKey, target);
-            }
-        }
-        if(target != null) {
-            if (target.getLoadingState() == BitmapTarget.LOADING) {
-                return null;
-            }
-            if (target.getLoadingState() == BitmapTarget.LOADING_SUCCESS) {
-                return target.getBitmap();
-            }
-        }
-        BitmapTarget loadImageTarget = RenderSDK.getInstance().getImageAdapter().requestImageTarget(documentView, ref, url, width, height, isPlaceholder);
-        if(loadImageTarget == null || imageKey == null){
-            return null;
-        }
-        documentView.getImageTargetMap().put(imageKey, loadImageTarget);
-        return loadImageTarget.getBitmap();
-    }
-
-
-
-    private native boolean nativeInitSDK(int screenWidth, int screenHeight, float density);
-    private native long nativeInitOpenGLRender(Surface surface, int width, int height);
-    private native void nativeDestroyOpenGLRender(long ptr, Surface surface);
-    private native long nativeCreateDocument(long key);
-    private native boolean nativeInvalidate(long ptr, long mRender);
-    private native void nativeLayoutIfNeed(long ptr);
-    private native String nativeHandleEvent(long mNativeDocument, int type, int x, int  y);
-    private native void nativeRenderSizeChanged(long openGLRenderPtr, int width, int height);
-    private native void nativeClearRenderBuffer(long openGLRenderPtr);
-    private native void nativeRenderSwap(long openGLRenderPtr);
-    private native void nativeDestroyDocument(long ptr);
-    private native int  nativeDocumentWidth(long ptr);
-    private native int  nativeDocumentHeight(long ptr);
-    private native void nativeCreateBody(long ptr, String ref, long styles, long attrs, long events);
-    private native void nativeActionAddElement(long ptr, String ref, String type, String parentRef, int index, long styles, long attrs, long events);
-    private native void nativeActionUpdateAttrs(long ptr, String ref, long attrs);
-    private native void nativeActionUpdateStyles(long ptr, String ref, long styles);
-    private native void nativeActionAddEvent(long nativeDocument, String ref, String event);
-    private native void nativeActionRemoveEvent(long nativeDocument, String ref, String event);
-    private native void nativeActionRemoveElement(long nativeDocument, String ref);
-    private native void nativeActionMoveElement(long nativeDocument, String ref, String parentRef, int index);
-    private native void nativeRefreshFont(long nativeDocument, String fontFamilyName);
-    private native void nativeAddFont(String fontFamilyName, String fontPath);
-    private native boolean nativeHasFont(String fontFamilyName, String fontPath);
-    private native int nativeGetBlockLayout(long ptr, String ref, int edge);
-    private native byte[] nativeGetNodeAttr(long ptr, String ref, String key);
-    private native String nativeGetNodeType(long ptr, String ref);
-    private native boolean nativeNodeContainsEvent(long ptr, String ref, String event);
-    private native long nativeNewMap();
-    private native void nativeMapPut(long ptr, String key, String value);
-    private native long nativeNewSet();
-    private native void nativeSetAdd(long ptr, String value);
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/download/DownloadUtils.java b/android/sdk/src/main/java/com/taobao/weex/render/download/DownloadUtils.java
deleted file mode 100644
index baed04a26a..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/download/DownloadUtils.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.download;
-
-import android.util.Log;
-
-import java.io.BufferedInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.math.BigInteger;
-import java.net.URL;
-import java.net.URLConnection;
-import java.security.MessageDigest;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-
-/**
- * Created by furture on 2018/9/21.
- */
-
-public class DownloadUtils {
-
-    public static boolean download(String urlStr, String savePath){
-        try {
-            URL url = new URL(urlStr);
-            URLConnection urlConnection = url.openConnection();
-            urlConnection.connect();
-            InputStream input = new BufferedInputStream(url.openStream());
-            File saveFile = new File(savePath);
-            if(saveFile.getParentFile() != null && !saveFile.getParentFile().exists()){
-                saveFile.getParentFile().mkdirs();
-            }
-            OutputStream output = new FileOutputStream(saveFile);
-            byte data[] = new byte[1024];
-            int count;
-            while ((count = input.read(data)) != -1) {
-                output.write(data, 0, count);
-            }
-            output.flush();
-            output.close();
-            input.close();
-            return true;
-        } catch (Exception e) {
-            return false;
-        }
-    }
-
-
-    public static boolean unzip(String zipFile, String dir){
-        try{
-            FileInputStream fin = new FileInputStream(zipFile);
-            ZipInputStream zin = new ZipInputStream(fin);
-            ZipEntry ze = null;
-            while ((ze = zin.getNextEntry()) != null) {
-                if(ze.isDirectory()) {
-                    continue;
-                } else {
-                    File file = new File(dir  + File.separator + ze.getName());
-                    if(file.getParentFile() != null){
-                        if(file.getParentFile().exists()){
-                            file.getParentFile().mkdirs();
-                        }
-                    }
-                    FileOutputStream fout = new FileOutputStream(file);
-                    byte[] buffer = new byte[1024];
-                    int len;
-                    while ((len = zin.read(buffer)) != -1) {
-                        fout.write(buffer, 0, len);
-                    }
-                    fout.close();
-                    zin.closeEntry();
-                }
-
-            }
-            zin.close();
-            return true;
-        }catch (Exception e){
-            return false;
-        }
-    }
-
-    public static boolean deleteFile(String filePath){
-        File file = new File(filePath);
-        return file.delete();
-    }
-
-
-    public static String fileMd5(String filename){
-        try{
-            InputStream fis =  new FileInputStream(filename);
-            byte[] buffer = new byte[1024];
-            MessageDigest complete = MessageDigest.getInstance("MD5");
-            int numRead;
-            do {
-                numRead = fis.read(buffer);
-                if (numRead > 0) {
-                    complete.update(buffer, 0, numRead);
-                }
-            } while (numRead != -1);
-
-            fis.close();
-            BigInteger bigInt = new BigInteger(1, complete.digest());
-            return  bigInt.toString(16).toLowerCase();
-        }catch (Exception e){
-            return "";
-        }
-    }
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/event/DocumentAdapter.java b/android/sdk/src/main/java/com/taobao/weex/render/event/DocumentAdapter.java
deleted file mode 100644
index 08beb119e9..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/event/DocumentAdapter.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.event;
-
-/**
- * Created by furture on 2018/8/21.
- */
-
-public class DocumentAdapter {
-
-    private OnEventListener onEventListener;
-    private OnImgLoadListener onImgLoadListener;
-    private OnDocumentSizeChangedListener onDocumentSizeChangedListener;
-    private boolean sizeChangedOnMainThread = true;
-
-    public OnEventListener getEventListener() {
-        return onEventListener;
-    }
-
-    public void setOnEventListener(OnEventListener eventListener) {
-        this.onEventListener = eventListener;
-    }
-
-    public OnImgLoadListener getImgLoadListener() {
-        return onImgLoadListener;
-    }
-
-    public void setOnImgLoadListener(OnImgLoadListener onImgLoadListener) {
-        this.onImgLoadListener = onImgLoadListener;
-    }
-
-    public OnDocumentSizeChangedListener getDocumentSizeChangedListener() {
-        return onDocumentSizeChangedListener;
-    }
-
-    public void setOnDocumentSizeChangedListener(OnDocumentSizeChangedListener onDocumentSizeChangedListener) {
-        this.onDocumentSizeChangedListener = onDocumentSizeChangedListener;
-    }
-
-    public boolean isSizeChangedOnMainThread() {
-        return sizeChangedOnMainThread;
-    }
-
-    public void setSizeChangedOnMainThread(boolean sizeChangedOnMainThread) {
-        this.sizeChangedOnMainThread = sizeChangedOnMainThread;
-    }
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/event/OnDocumentSizeChangedListener.java b/android/sdk/src/main/java/com/taobao/weex/render/event/OnDocumentSizeChangedListener.java
deleted file mode 100644
index e185faa99c..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/event/OnDocumentSizeChangedListener.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.event;
-
-import com.taobao.weex.render.view.DocumentView;
-
-/**
- * Created by furture on 2018/8/11.
- */
-
-public interface OnDocumentSizeChangedListener {
-
-    public void onSizeChanged(DocumentView documentView, int width, int height);
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/event/OnEventListener.java b/android/sdk/src/main/java/com/taobao/weex/render/event/OnEventListener.java
deleted file mode 100644
index f667d73f8f..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/event/OnEventListener.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.event;
-
-/**
- * Created by furture on 2018/7/23.
- */
-
-public interface OnEventListener {
-
-    public static final int EVENT_TYPE_CLICK = 0;
-
-
-    public void onClick(String ref, int x, int y, int width, int height);
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/event/OnImgLoadListener.java b/android/sdk/src/main/java/com/taobao/weex/render/event/OnImgLoadListener.java
deleted file mode 100644
index d901ff323a..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/event/OnImgLoadListener.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.event;
-
-import com.taobao.weex.render.image.BitmapTarget;
-
-/**
- * Created by furture on 2018/8/21.
- */
-
-public interface OnImgLoadListener {
-
-    public void onLoadImage(BitmapTarget imageTarget);
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/event/SDKOnInitListener.java b/android/sdk/src/main/java/com/taobao/weex/render/event/SDKOnInitListener.java
deleted file mode 100644
index fb02f059f2..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/event/SDKOnInitListener.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.event;
-
-/**
- * Created by furture on 2018/9/21.
- */
-
-public interface SDKOnInitListener {
-
-    public void onInit(boolean reslt);
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/font/FontManager.java b/android/sdk/src/main/java/com/taobao/weex/render/font/FontManager.java
deleted file mode 100644
index 80434bc50c..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/font/FontManager.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.font;
-
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * Created by furture on 2018/8/30.
- */
-
-public class FontManager {
-
-
-    private Map<String, FontWatchTask> fontWatchTaskMap;
-
-    private FontManager(){
-        fontWatchTaskMap = new ConcurrentHashMap<>();
-    }
-
-    private static FontManager fontManager;
-    public static FontManager getInstance(){
-        if(fontManager == null){
-            synchronized (FontManager.class){
-                if(fontManager == null){
-                    fontManager = new FontManager();
-                }
-            }
-        }
-        return fontManager;
-    }
-
-
-    public FontWatchTask getFontWatchTask(String fontFamily, String url){
-        FontWatchTask fontWatchTask = fontWatchTaskMap.get(fontFamily);
-        if(fontWatchTask != null ){
-            if(!fontWatchTask.isSame(fontFamily, url)){
-                fontWatchTask = null;
-            }
-        }
-        if(fontWatchTask == null){
-            fontWatchTask = new FontWatchTask(fontFamily, url);
-            fontWatchTaskMap.put(fontFamily, fontWatchTask);
-        }
-        return fontWatchTask;
-    }
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/font/FontWatchTask.java b/android/sdk/src/main/java/com/taobao/weex/render/font/FontWatchTask.java
deleted file mode 100644
index 2d2f2ed963..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/font/FontWatchTask.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.font;
-
-import android.text.TextUtils;
-
-import com.taobao.weex.render.bridge.RenderBridge;
-import com.taobao.weex.render.log.RenderLog;
-import com.taobao.weex.render.manager.RenderManager;
-import com.taobao.weex.render.view.DocumentView;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Created by furture on 2018/8/30.
- */
-
-public class FontWatchTask implements  Runnable{
-    private List<DocumentView> documentViews;
-    private boolean isLoaded;
-    private String fontFaimly;
-    private String fontUrl;
-    private String fontPath;
-    private boolean isLoading;
-
-    public FontWatchTask(String fontFaimly, String fontUrl) {
-        this.fontFaimly = fontFaimly;
-        this.fontUrl = fontUrl;
-        this.documentViews = new ArrayList<>();
-        this.isLoaded = false;
-    }
-
-    public void notifyFontReadyWithFilePath(String filePath){
-        this.fontPath = filePath;
-        RenderManager.getInstance().getGpuHandler().post(this);
-    }
-
-
-    boolean isSame(String fontFaimly, String fontUrl){
-        return this.fontFaimly.equals(fontFaimly) && this.fontUrl.equals(fontUrl);
-    }
-
-
-    @Override
-    public void run() {
-        if(TextUtils.isEmpty(fontPath)){
-            synchronized (documentViews){
-                documentViews.clear();
-            }
-            return;
-        }
-        if(isLoaded){
-            return;
-        }
-        this.isLoaded = true;
-        if(new File(fontPath).exists()){
-            if(!RenderBridge.getInstance().hasFont(fontFaimly, fontPath)){
-                RenderBridge.getInstance().addFont(fontFaimly, fontPath);
-                synchronized (documentViews){
-                    for(DocumentView documentView : documentViews){
-                        documentView.refreshFont(fontFaimly);
-                    }
-                }
-            }
-        }else{
-            //RenderLog.actionError();
-        }
-        synchronized (documentViews){
-            documentViews.clear();
-        }
-    }
-
-    public void addWatchDocument(DocumentView documentView){
-        if(isLoaded){
-            return;
-        }
-        synchronized (documentViews){
-            documentViews.add(documentView);
-        }
-    }
-
-    public boolean isLoaded() {
-        return isLoaded;
-    }
-
-    public boolean isLoading() {
-        return isLoading;
-    }
-
-    public void setLoading(boolean loading) {
-        isLoading = loading;
-    }
-
-    public String getFontFaimly() {
-        return fontFaimly;
-    }
-
-    public String getFontUrl() {
-        return fontUrl;
-    }
-
-    public String getFontPath() {
-        return fontPath;
-    }
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/image/BitmapTarget.java b/android/sdk/src/main/java/com/taobao/weex/render/image/BitmapTarget.java
deleted file mode 100644
index a58ae816da..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/image/BitmapTarget.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.image;
-
-import android.graphics.Bitmap;
-
-/**
- * Created by furture on 2018/7/24.
- */
-
-public interface BitmapTarget {
-
-
-    String getRef();
-    String getUrl();
-    boolean isPlaceholder();
-    Bitmap getBitmap();
-    int getLoadingState();
-
-    void onSupportedBitmap(Bitmap bitmap);
-
-
-    /**
-     * loading state
-     * */
-    public static final int LOADING = 0;
-    public static final int LOADING_FAILED = -1;
-    public static final int LOADING_SUCCESS = 1;
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/image/RenderBitmapImageCache.java b/android/sdk/src/main/java/com/taobao/weex/render/image/RenderBitmapImageCache.java
deleted file mode 100644
index 43b1a32c32..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/image/RenderBitmapImageCache.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.image;
-
-import android.util.LruCache;
-
-import java.lang.ref.WeakReference;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * Created by furture on 2018/8/20.
- */
-
-public class RenderBitmapImageCache {
-
-    private LruCache<Long,WeakReference<Map<String, BitmapTarget>>> imageTargetsCache;
-
-    private RenderBitmapImageCache(){
-         imageTargetsCache   = new LruCache<>(512);
-    }
-
-
-    private static RenderBitmapImageCache cacheInstance;
-    public static RenderBitmapImageCache getInstance(){
-        if(cacheInstance == null){
-            synchronized (RenderBitmapImageCache.class){
-                if(cacheInstance == null) {
-                    cacheInstance = new RenderBitmapImageCache();
-                }
-            }
-        }
-        return cacheInstance;
-    }
-
-
-    public BitmapTarget getImageTarget(long documentKey, String imageUrl){
-        Map<String, BitmapTarget> cache = getImageTarget(documentKey);
-        if(cache == null){
-            return null;
-        }
-        return cache.get(imageUrl);
-    }
-
-    private Map<String, BitmapTarget> getImageTarget(long documentKey){
-        WeakReference<Map<String, BitmapTarget>> imageTargetWeakReference = imageTargetsCache.get(documentKey);
-        if(imageTargetWeakReference == null){
-            return null;
-        }
-        Map<String, BitmapTarget> imageTargetMap = imageTargetWeakReference.get();
-        return imageTargetMap;
-    }
-
-
-    public void cacheImageTargets(long documentKey, Map<String, BitmapTarget> imageTargetMap){
-        if(imageTargetMap == null || imageTargetMap.size() == 0) {
-            return;
-        }
-
-        Map<String, BitmapTarget> caches =  getImageTarget(documentKey);
-        if(caches == null){
-            caches = new ConcurrentHashMap<>();
-            imageTargetsCache.put(documentKey, new WeakReference<Map<String, BitmapTarget>>(caches));
-        }
-        caches.clear();
-        Set<Map.Entry<String, BitmapTarget>> entrySet =  imageTargetMap.entrySet();
-        for(Map.Entry<String, BitmapTarget> entry : entrySet){
-            caches.put(entry.getKey(), entry.getValue());
-        }
-    }
-
-
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/image/RenderBitmapProcessor.java b/android/sdk/src/main/java/com/taobao/weex/render/image/RenderBitmapProcessor.java
deleted file mode 100644
index f2208205a3..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/image/RenderBitmapProcessor.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.image;
-
-import android.graphics.Bitmap;
-import android.util.Log;
-
-import com.taobao.weex.render.manager.RenderManager;
-
-/**
- * Created by furture on 2018/8/27.
- */
-
-public class RenderBitmapProcessor {
-
-
-    public static void toRenderSupportBitmap(final BitmapTarget target){
-        if(isSupportedBitmap(target.getBitmap())){
-            target.onSupportedBitmap(target.getBitmap());
-            return;
-        }
-        RenderManager.getInstance().getIoHandler().post(new Runnable() {
-            @Override
-            public void run() {
-               final Bitmap bitmap =  target.getBitmap().copy(Bitmap.Config.ARGB_8888, target.getBitmap().isMutable());
-               RenderManager.getInstance().getUiHandler().post(new Runnable() {
-                   @Override
-                   public void run() {
-                       target.onSupportedBitmap(bitmap);
-                   }
-               });
-            }
-        });
-    }
-
-
-    private static boolean isSupportedBitmap(Bitmap bitmap){
-        if(bitmap == null){
-            return true;
-        }
-        Bitmap.Config config = bitmap.getConfig();
-        if(config == null){
-            return false;
-        }
-        if(config == Bitmap.Config.ALPHA_8
-                || config == Bitmap.Config.RGB_565
-                || config == Bitmap.Config.ARGB_4444
-                || config == Bitmap.Config.ARGB_8888){
-            return true;
-        }
-        return false;
-    }
-
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/image/RenderImageAdapter.java b/android/sdk/src/main/java/com/taobao/weex/render/image/RenderImageAdapter.java
deleted file mode 100644
index e80e6096c8..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/image/RenderImageAdapter.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.image;
-
-import com.taobao.weex.render.view.DocumentView;
-
-/**
- * Created by furture on 2018/8/10.
- */
-
-public abstract class RenderImageAdapter {
-
-
-    public abstract BitmapTarget requestImageTarget(DocumentView documentView, String ref, String url, int width, int height, boolean isPlaceholder);
-
-
-
-    public String genImageKey(DocumentView documentView, String ref, String url, int width, int height, boolean isPlaceholder){
-        if(isPlaceholder){
-            return url;
-        }
-        StringBuilder stringBuilder = new StringBuilder(url);
-        stringBuilder.append('@');
-        stringBuilder.append(ref);
-        return stringBuilder.toString();
-    }
-
-
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/lifecycle/RenderActivityLifecycleCallback.java b/android/sdk/src/main/java/com/taobao/weex/render/lifecycle/RenderActivityLifecycleCallback.java
deleted file mode 100644
index 74b187a014..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/lifecycle/RenderActivityLifecycleCallback.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.lifecycle;
-
-import android.app.Activity;
-import android.app.Application;
-import android.os.Bundle;
-
-import com.taobao.weex.render.manager.RenderManager;
-
-/**
- * Created by furture on 2018/8/31.
- */
-
-public class RenderActivityLifecycleCallback implements Application.ActivityLifecycleCallbacks{
-
-
-    @Override
-    public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
-
-    }
-
-    @Override
-    public void onActivityStarted(Activity activity) {
-
-    }
-
-    @Override
-    public void onActivityResumed(Activity activity) {
-        RenderManager.getInstance().onActivityResumed(activity);
-    }
-
-    @Override
-    public void onActivityPaused(Activity activity) {
-        RenderManager.getInstance().onActivityPaused(activity);
-    }
-
-    @Override
-    public void onActivityStopped(Activity activity) {
-
-    }
-
-    @Override
-    public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
-
-    }
-
-    @Override
-    public void onActivityDestroyed(Activity activity) {
-        RenderManager.getInstance().onActivityDestroyed(activity);
-    }
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/log/RenderLog.java b/android/sdk/src/main/java/com/taobao/weex/render/log/RenderLog.java
deleted file mode 100644
index a7656db036..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/log/RenderLog.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.log;
-
-import android.util.Log;
-
-import com.taobao.weex.render.view.DocumentView;
-
-import org.json.JSONObject;
-
-import java.util.Collection;
-import java.util.Map;
-
-/**
- * Render Log for recording render command and replay render action command
- * Created by furture on 2018/9/1.
- */
-public class RenderLog {
-
-    public static final String RENDER_LOG_TAG  = "WeexRenderLog";
-
-    private static  boolean isLogEnabled = false;
-
-    public static final void openRenderLog(boolean enabled){
-        isLogEnabled = enabled;
-    }
-
-    public static boolean isRenderLogEnabled(){
-        return isLogEnabled;
-    }
-
-    public static void actionCreateBody(DocumentView documentView, String ref, Map<String, String> style, Map<String, String> attrs, Collection<String> events) {
-       if(isLogEnabled){
-           Log.e(RENDER_LOG_TAG, RENDER_LOG_TAG + " " + documentView.hashCode() + "documentActionCreateBody;" + ref + ";"+ toJSON(style) + ";" + toJSON(attrs)
-                   + ";" + toJSON(events));
-       }
-    }
-
-    public static void actionAddElement(DocumentView documentView, String ref, String componentType, String parentRef, int index, Map<String, String> style, Map<String, String> attrs, Collection<String> events){
-        if(isLogEnabled){
-            Log.e(RENDER_LOG_TAG, RENDER_LOG_TAG + " " + documentView.hashCode() + "documentActionAddElement;" + ref + ";" + componentType + ";" + parentRef + ";" + index + ";"
-                    + toJSON(style) + ";" + toJSON(attrs)
-                    + ";" + toJSON(events));
-        }
-    }
-
-
-    public static void actionUpdateStyles(DocumentView documentView, String ref, Map<String, String> styles) {
-        if(isLogEnabled) {
-            Log.e(RENDER_LOG_TAG, RENDER_LOG_TAG + " " + documentView.hashCode() + "documentActionUpdateStyle;" + ref + ";" + toJSON(styles));
-        }
-    }
-
-    public static void actionUpdateAttrs(DocumentView documentView, String ref, Map<String, String> attrs){
-        if(isLogEnabled) {
-            Log.e(RENDER_LOG_TAG, RENDER_LOG_TAG + " " + documentView.hashCode() + "documentActionUpdateAttrs;" + ref + ";" + toJSON(attrs));
-        }
-    }
-
-
-    public static void actionAddEvent(DocumentView documentView, String ref, String event){
-        if(isLogEnabled) {
-            Log.e(RENDER_LOG_TAG, RENDER_LOG_TAG + " " + documentView.hashCode() + "documentActionAddEvent;" + ref + ";" + event);
-        }
-    }
-
-    public static void actionRemoveEvent(DocumentView documentView, String ref, String event){
-        if(isLogEnabled) {
-            Log.e(RENDER_LOG_TAG, RENDER_LOG_TAG + " " + documentView.hashCode() + "documentRemoveEvent;" + ref + ";" + event);
-        }
-    }
-
-
-    public static void actionMoveElement(DocumentView documentView, String ref, String parentRef, int index){
-        if(isLogEnabled) {
-            Log.e(RENDER_LOG_TAG, RENDER_LOG_TAG + " " + documentView.hashCode() + "documentActionMoveElement;" + ref + ";" + parentRef + ";" + index);
-        }
-    }
-
-
-    public static void actionRemoveElement(DocumentView documentView, String ref){
-        if(isLogEnabled) {
-            Log.e(RENDER_LOG_TAG, RENDER_LOG_TAG + " " + documentView.hashCode() + "documentActionRemoveElement;" + ref);
-        }
-    }
-
-    public static void actionLayoutExecute(DocumentView documentView){
-        if(isLogEnabled) {
-            Log.e(RENDER_LOG_TAG, RENDER_LOG_TAG + " " + documentView.hashCode() + "documentActionLayoutExecute;" + documentView.getNativeDocument());
-        }
-    }
-
-    public static void actionInvalidate(DocumentView documentView){
-        if(isLogEnabled) {
-            Log.e(RENDER_LOG_TAG, RENDER_LOG_TAG + " " + documentView.hashCode() + "documentActionInvalidate;" + documentView.getNativeDocument());
-        }
-    }
-
-    public static void actionInitOpenGL(DocumentView documentView, int width, int height){
-        if(isLogEnabled) {
-            Log.e(RENDER_LOG_TAG, RENDER_LOG_TAG + " " + documentView.hashCode() + "documentActionInitOpenGL;" + width +";" + height);
-        }
-    }
-
-    public static void actionSizeChanged(DocumentView documentView, int width, int height){
-        if(isLogEnabled) {
-            Log.e(RENDER_LOG_TAG, RENDER_LOG_TAG + " " + documentView.hashCode() + "documentActionSizeChanged;" + width + ";" + height);
-        }
-    }
-
-    public static void actionDestroyGL(DocumentView documentView){
-        if(isLogEnabled) {
-            Log.e(RENDER_LOG_TAG, RENDER_LOG_TAG + " " + documentView.hashCode() + "documentActionDestroyGL;");
-        }
-    }
-
-    public static void actionSwap(DocumentView documentView){
-        if(isLogEnabled) {
-            Log.e(RENDER_LOG_TAG, RENDER_LOG_TAG + " " + documentView.hashCode() + "documentActionSwap;" + documentView.getNativeDocument());
-        }
-    }
-
-    public static void actionError(String message) {
-        if(isLogEnabled){
-            Log.e(RENDER_LOG_TAG, RENDER_LOG_TAG + " error " + message);
-        }
-    }
-
-    private static final String toJSON(Map<String, String> style){
-        if(style == null){
-            return "null";
-        }
-        return new JSONObject(style).toString();
-    }
-
-    private static String toJSON(Collection<String> events) {
-        if(events == null){
-            return "null";
-        }
-        return new org.json.JSONArray(events).toString();
-    }
-
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/manager/RenderManager.java b/android/sdk/src/main/java/com/taobao/weex/render/manager/RenderManager.java
deleted file mode 100644
index 8f04fa1c3d..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/manager/RenderManager.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.manager;
-
-import android.app.Activity;
-import android.os.Handler;
-import android.os.Looper;
-
-import com.taobao.weex.render.threads.GpuThread;
-import com.taobao.weex.render.threads.IoThread;
-import com.taobao.weex.render.view.DocumentView;
-
-import java.lang.ref.WeakReference;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.atomic.AtomicLong;
-
-/**
- * Created by furture on 2018/7/24.
- */
-
-public class RenderManager {
-
-
-    private Map<Long,WeakReference<DocumentView>> documentsMap;
-    private Handler uiHandler;
-    private Handler gpuHandler;
-    private AtomicLong atomicLong;
-    private Handler ioHandler;
-
-
-
-
-    private RenderManager(){
-        documentsMap = new ConcurrentHashMap<>();
-        uiHandler = new Handler(Looper.getMainLooper());
-        gpuHandler = new Handler(GpuThread.getThread().getLooper());
-        atomicLong = new AtomicLong(0);
-    }
-
-    public Handler getUiHandler(){
-        return uiHandler;
-    }
-
-    public void registerDocument(long key, DocumentView render){
-        WeakReference<DocumentView> surfaceRenderWeakReference = new WeakReference<DocumentView>(render);
-       documentsMap.put(key, surfaceRenderWeakReference);
-    }
-
-    public long nextDocumentKey(){
-        return atomicLong.incrementAndGet();
-    }
-
-    public DocumentView getDocument(long key){
-        WeakReference<DocumentView> surfaceRenderWeakReference = documentsMap.get(key);
-        if(surfaceRenderWeakReference == null){
-            return null;
-        }
-        return surfaceRenderWeakReference.get();
-    }
-
-    public Map<Long,WeakReference<DocumentView>> getDocumentsMap(){
-         return documentsMap;
-    }
-
-
-    public void onActivityResumed(Activity activity) {
-        Set<Map.Entry<Long,WeakReference<DocumentView>>> entries = documentsMap.entrySet();
-        for(Map.Entry<Long,WeakReference<DocumentView>> entry : entries){
-            DocumentView documentView = entry.getValue().get();
-            if(documentView == null){
-                continue;
-            }
-            if(isAcivityDocument(documentView, activity)){
-                documentView.invalidate();
-            }
-        }
-    }
-
-    public void onActivityPaused(Activity activity) {
-
-    }
-
-    public void onActivityDestroyed(Activity activity) {
-        Set<Map.Entry<Long,WeakReference<DocumentView>>> entries = documentsMap.entrySet();
-        for(Map.Entry<Long,WeakReference<DocumentView>> entry : entries){
-            DocumentView documentView = entry.getValue().get();
-            if(documentView == null){
-                continue;
-            }
-            if(isAcivityDocument(documentView, activity)){
-                documentView.destory();
-            }
-        }
-    }
-
-    private boolean isAcivityDocument(DocumentView documentView, Activity activity){
-        if(documentView.getContext() == activity || documentView.getContext() == activity.getBaseContext()){
-            return true;
-        }
-        return false;
-    }
-
-
-
-    public void removeDocument(long key){
-        documentsMap.remove(key);
-    }
-
-    public Handler getGpuHandler() {
-        return gpuHandler;
-    }
-
-    public Handler getIoHandler(){
-        if(ioHandler == null){
-            synchronized (this){
-                if(ioHandler == null) {
-                    ioHandler = new Handler(IoThread.getThread().getLooper());
-                }
-            }
-        }
-        return ioHandler;
-    }
-
-    public static RenderManager getInstance(){
-        if(renderManager == null){
-            synchronized (RenderManager.class){
-                if(renderManager == null) {
-                    renderManager = new RenderManager();
-                }
-            }
-        }
-        return renderManager;
-    }
-    private static RenderManager renderManager;
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/task/GLTask.java b/android/sdk/src/main/java/com/taobao/weex/render/task/GLTask.java
deleted file mode 100644
index b81af5accd..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/task/GLTask.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.task;
-
-import android.util.Log;
-
-import com.taobao.weex.render.log.RenderLog;
-import com.taobao.weex.render.manager.RenderManager;
-import com.taobao.weex.render.view.DocumentView;
-
-import java.util.concurrent.atomic.AtomicInteger;
-
-/**
- * Created by furture on 2018/8/1.
- */
-
-public abstract class GLTask {
-
-    private DocumentView documentView;
-    private static AtomicInteger taskNum = new AtomicInteger(0);
-
-    public GLTask(DocumentView documentView) {
-        this.documentView = documentView;
-        taskNum.incrementAndGet();
-    }
-
-    public DocumentView getDocumentView() {
-        return documentView;
-    }
-
-
-    public final void execute(){
-        try {
-            run();
-        }finally {
-            taskNum.decrementAndGet();
-        }
-    }
-
-    public abstract void run();
-
-
-    public static int getTaskNum(){
-        return taskNum.get();
-    }
-
-    public static void waitIfTaskBlock(){
-        if(RenderLog.isRenderLogEnabled()){
-            Log.d(RenderLog.RENDER_LOG_TAG, "RenderTask waitIfTaskBlock " + RenderManager.getInstance().getDocumentsMap().size() + " taskNum " + taskNum.get() + " renderNum " + OpenGLRender.getRenderNum());
-        }
-        int maxTimes = taskNum.get();
-        while (taskNum.get() >= 8 && maxTimes > 0){
-            try {
-                Thread.sleep(4);
-            } catch (InterruptedException e) {
-                e.printStackTrace();
-            }
-            maxTimes--;
-        }
-    }
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/task/GLTaskQueue.java b/android/sdk/src/main/java/com/taobao/weex/render/task/GLTaskQueue.java
deleted file mode 100644
index e950a6d208..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/task/GLTaskQueue.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.task;
-
-import android.util.Log;
-
-import com.taobao.weex.render.manager.RenderManager;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Created by furture on 2018/8/1.
- */
-
-public class GLTaskQueue implements Runnable {
-
-    private List<GLTask> queues;
-
-    public GLTaskQueue() {
-        this.queues = new ArrayList<>();
-    }
-
-
-    @Override
-    public void run() {
-        List<GLTask> tasks = new ArrayList<>();
-        synchronized (this){
-            tasks.addAll(queues);
-            queues.clear();
-        }
-        for(GLTask task : tasks){
-            task.execute();
-        }
-        tasks.clear();
-
-    }
-
-
-    public void addTask(GLTask task){
-        synchronized (this){
-            queues.add(task);
-        }
-        RenderManager.getInstance().getGpuHandler().removeCallbacks(this);
-        RenderManager.getInstance().getGpuHandler().postAtFrontOfQueue(this);
-    }
-
-    public boolean isEmpty(){
-        return queues.isEmpty();
-    }
-
-
-    public int size() {
-        return queues.size();
-    }
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/task/OpenGLRender.java b/android/sdk/src/main/java/com/taobao/weex/render/task/OpenGLRender.java
deleted file mode 100644
index 6cca598d43..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/task/OpenGLRender.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.task;
-
-import android.graphics.SurfaceTexture;
-import android.view.Surface;
-
-import com.taobao.weex.render.bridge.RenderBridge;
-import com.taobao.weex.render.threads.GpuThread;
-
-import java.util.concurrent.atomic.AtomicInteger;
-
-/**
- * opengl render for manager context for weex
- * Created by furture on 2018/7/23.
- */
-public class OpenGLRender {
-
-    private SurfaceTexture surfaceTexture;
-    private Surface surface;
-    private int width;
-    private int height;
-    private long ptr;
-    private boolean willDestory;
-
-    private static AtomicInteger renderCount = new AtomicInteger();
-
-    public OpenGLRender(SurfaceTexture surfaceTexture, int width, int height) {
-        this.surfaceTexture = surfaceTexture;
-        this.surface = new Surface(surfaceTexture);
-        this.width = width;
-        this.height = height;
-    }
-
-    public void initRender(){
-        if(ptr == 0){
-            if(Thread.currentThread() != GpuThread.getThread()){
-                throw new RuntimeException("OpenGLRender Init Must Be Call On GPU Thread");
-            }
-            ptr = RenderBridge.getInstance().initOpenGLRender(surface, width, height);
-            renderCount.incrementAndGet();
-        }
-    }
-
-
-    @Override
-    protected void finalize() throws Throwable {
-        destroy();
-        super.finalize();
-    }
-
-    public boolean isDestory(){
-        return ptr == 0;
-    }
-
-    public synchronized void destroy(){
-        if(ptr != 0){
-            renderCount.decrementAndGet();
-            RenderBridge.getInstance().destroyOpenGLRender(ptr, surface);
-            ptr = 0;
-        }
-        if(surface != null){
-            surface.release();
-            surface = null;
-        }
-    }
-
-    public long getPtr(){
-        return ptr;
-    }
-
-    public Surface getSurface() {
-        return surface;
-    }
-
-    public int getWidth() {
-        return width;
-    }
-
-    public int getHeight() {
-        return height;
-    }
-
-    public void setWidth(int width) {
-        this.width = width;
-    }
-
-    public void setHeight(int height) {
-        this.height = height;
-    }
-
-    public boolean isWillDestory() {
-        return willDestory;
-    }
-
-    public void setWillDestory(boolean willDestory) {
-        this.willDestory = willDestory;
-    }
-
-    public static int getRenderNum(){
-        return renderCount.get();
-    }
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/task/OpenGLRenderDestroyTask.java b/android/sdk/src/main/java/com/taobao/weex/render/task/OpenGLRenderDestroyTask.java
deleted file mode 100644
index e6fa9396a8..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/task/OpenGLRenderDestroyTask.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.task;
-
-import com.taobao.weex.render.log.RenderLog;
-import com.taobao.weex.render.view.DocumentView;
-import com.taobao.weex.render.view.SurfaceTextureHolder;
-
-/**
- * Created by furture on 2018/8/14.
- */
-
-public class OpenGLRenderDestroyTask extends GLTask {
-
-    private SurfaceTextureHolder surfaceTextureHolder;
-
-
-    public OpenGLRenderDestroyTask(DocumentView documentView, final SurfaceTextureHolder surfaceTextureHolder) {
-        super(documentView);
-        this.surfaceTextureHolder = surfaceTextureHolder;
-    }
-
-    @Override
-    public void run() {
-        OpenGLRender openGLRender = surfaceTextureHolder.getOpenGLRender();
-        if(openGLRender != null){
-            openGLRender.setWillDestory(true);
-            openGLRender.destroy();
-            surfaceTextureHolder.setOpenGLRender(null);
-            if(getDocumentView() != null){
-                RenderLog.actionDestroyGL(getDocumentView());
-            }
-        }
-    }
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/task/OpenGLRenderInitTask.java b/android/sdk/src/main/java/com/taobao/weex/render/task/OpenGLRenderInitTask.java
deleted file mode 100644
index cce4b0dc20..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/task/OpenGLRenderInitTask.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.task;
-
-import android.util.Log;
-
-import com.taobao.weex.render.bridge.RenderBridge;
-import com.taobao.weex.render.log.RenderLog;
-import com.taobao.weex.render.view.DocumentView;
-import com.taobao.weex.render.view.SurfaceTextureHolder;
-
-/**
- * Created by furture on 2018/8/1.
- */
-
-public class OpenGLRenderInitTask extends GLTask {
-
-    private SurfaceTextureHolder surfaceTextureHolder;
-
-    public OpenGLRenderInitTask(DocumentView documentView, final SurfaceTextureHolder surfaceTextureHolder) {
-        super(documentView);
-        this.surfaceTextureHolder = surfaceTextureHolder;
-    }
-
-    @Override
-    public void run() {
-        if(surfaceTextureHolder.isDestory()){
-            return;
-        }
-        OpenGLRender openGLRender = new OpenGLRender(surfaceTextureHolder.getSurfaceTexture(), surfaceTextureHolder.getWidth(), surfaceTextureHolder.getHeight());
-        openGLRender.initRender();
-        surfaceTextureHolder.setOpenGLRender(openGLRender);
-
-        if(surfaceTextureHolder.isDestory()){
-            return;
-        }
-
-        synchronized (getDocumentView().lock){
-            if(!surfaceTextureHolder.isDestory()){
-                RenderBridge.getInstance().renderSwap(openGLRender.getPtr());
-            }
-        }
-
-        if(surfaceTextureHolder.isDestory()){
-            return;
-        }
-        getDocumentView().attachGLRender(openGLRender);
-        RenderLog.actionInitOpenGL(getDocumentView(), openGLRender.getWidth(), openGLRender.getHeight());
-    }
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/task/OpenGLRenderSizeChangedTask.java b/android/sdk/src/main/java/com/taobao/weex/render/task/OpenGLRenderSizeChangedTask.java
deleted file mode 100644
index f07f21b3a0..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/task/OpenGLRenderSizeChangedTask.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.task;
-
-import com.taobao.weex.render.bridge.RenderBridge;
-import com.taobao.weex.render.log.RenderLog;
-import com.taobao.weex.render.view.DocumentView;
-import com.taobao.weex.render.view.SurfaceTextureHolder;
-
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Created by furture on 2018/8/17.
- */
-
-public class OpenGLRenderSizeChangedTask extends GLTask implements Runnable {
-
-    private SurfaceTextureHolder surfaceTextureHolder;
-    private CountDownLatch countDownLatch;
-
-    public OpenGLRenderSizeChangedTask(DocumentView documentView, SurfaceTextureHolder surfaceTextureHolder) {
-        super(documentView);
-        this.surfaceTextureHolder = surfaceTextureHolder;
-        this.countDownLatch = new CountDownLatch(1);
-    }
-
-    @Override
-    public void run() {
-        try {
-
-            OpenGLRender openGLRender = surfaceTextureHolder.getOpenGLRender();
-            if(surfaceTextureHolder.isDestory() || openGLRender == null){
-                return;
-            }
-            openGLRender.setWidth(surfaceTextureHolder.getWidth());
-            openGLRender.setHeight(surfaceTextureHolder.getHeight());
-            RenderBridge.getInstance().renderSizeChanged(openGLRender.getPtr(), surfaceTextureHolder.getWidth(), surfaceTextureHolder.getHeight());
-
-            if(surfaceTextureHolder.isDestory()){
-                return;
-            }
-
-            synchronized (getDocumentView().lock){
-                if(!surfaceTextureHolder.isDestory()){
-                    RenderBridge.getInstance().renderSwap(openGLRender.getPtr());
-                }
-            }
-
-            if(surfaceTextureHolder.isDestory()){
-                return;
-            }
-
-            RenderBridge.getInstance().renderClearBuffer(openGLRender.getPtr());
-
-            if(surfaceTextureHolder.isDestory()){
-                return;
-            }
-
-            synchronized (getDocumentView().lock){
-                if(!surfaceTextureHolder.isDestory()){
-                    RenderBridge.getInstance().renderSwap(openGLRender.getPtr());
-                }
-            }
-
-            if(surfaceTextureHolder.isDestory()){
-                return;
-            }
-
-            getDocumentView().renderSizeChanged(openGLRender);
-        }finally {
-            countDownLatch.countDown();
-        }
-    }
-
-    public void waitComplete(){
-        try {
-            countDownLatch.await(160, TimeUnit.MILLISECONDS);
-        } catch (InterruptedException e) {
-            e.printStackTrace();
-        }
-    }
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/threads/GpuThread.java b/android/sdk/src/main/java/com/taobao/weex/render/threads/GpuThread.java
deleted file mode 100644
index 109cdf1458..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/threads/GpuThread.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.threads;
-
-import android.os.HandlerThread;
-
-import com.taobao.weex.render.RenderSDK;
-
-/**
- * Created by furture on 2018/7/14.
- */
-
-public class GpuThread extends HandlerThread {
-
-    private GpuThread(String name) {
-        super(name);
-    }
-
-
-    public static GpuThread getThread(){
-        if(gpuThread == null){
-            synchronized (GpuThread.class){
-                if(gpuThread == null){
-                    gpuThread = new GpuThread("GpuThread");
-                    gpuThread.start();
-                }
-            }
-        }
-        return gpuThread;
-    }
-    private static GpuThread gpuThread;
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/threads/IoThread.java b/android/sdk/src/main/java/com/taobao/weex/render/threads/IoThread.java
deleted file mode 100644
index bd3af5fd48..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/threads/IoThread.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.threads;
-
-import android.os.HandlerThread;
-
-/**
- * Created by furture on 2018/7/14.
- */
-
-public class IoThread extends HandlerThread {
-
-    private IoThread(String name) {
-        super(name);
-    }
-
-
-    public static IoThread getThread(){
-        if(gpuThread == null){
-            synchronized (IoThread.class){
-                if(gpuThread == null){
-                    gpuThread = new IoThread("IoThread");
-                    gpuThread.start();
-                }
-            }
-        }
-        return gpuThread;
-    }
-    private static IoThread gpuThread;
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/threads/WeakRefHandler.java b/android/sdk/src/main/java/com/taobao/weex/render/threads/WeakRefHandler.java
deleted file mode 100644
index b30d584862..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/threads/WeakRefHandler.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.threads;
-
-
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-
-import java.lang.ref.WeakReference;
-
-/**
- * Created by furture on 2018/7/27.
- */
-
-public class WeakRefHandler extends Handler {
-    private WeakReference<Callback> callbackRef;
-
-
-    public WeakRefHandler(Callback callback) {
-        callbackRef = new WeakReference<Callback>(callback);
-    }
-
-    public WeakRefHandler(Looper looper, Callback callback) {
-        super(looper);
-        callbackRef = new WeakReference<Callback>(callback);
-    }
-
-    @Override
-    public void handleMessage(Message msg) {
-        Callback callback = callbackRef.get();
-        if(callback != null){
-            callback.handleMessage(msg);
-        }else{
-            removeCallbacks(null);
-        }
-    }
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/view/DocumentTextureView.java b/android/sdk/src/main/java/com/taobao/weex/render/view/DocumentTextureView.java
deleted file mode 100644
index 916c6c7ca2..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/view/DocumentTextureView.java
+++ /dev/null
@@ -1,230 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.view;
-
-import android.content.Context;
-import android.graphics.Rect;
-import android.graphics.SurfaceTexture;
-import android.os.AsyncTask;
-import android.support.v4.view.ViewCompat;
-import android.util.AttributeSet;
-import android.view.KeyEvent;
-import android.view.MotionEvent;
-import android.view.TextureView;
-import android.view.View;
-
-import com.taobao.weex.render.accessibility.DocumentAccessibilityHelper;
-import com.taobao.weex.render.event.OnEventListener;
-import com.taobao.weex.render.task.GLTask;
-import com.taobao.weex.render.task.GLTaskQueue;
-import com.taobao.weex.render.task.OpenGLRenderDestroyTask;
-import com.taobao.weex.render.task.OpenGLRenderInitTask;
-import com.taobao.weex.render.task.OpenGLRenderSizeChangedTask;
-
-
-/**
- * Created by furture on 2018/7/23.
- */
-
-public class DocumentTextureView extends TextureView implements  TextureView.SurfaceTextureListener, View.OnClickListener{
-   private DocumentView documentView;
-    private boolean hasAttachToWindow;
-    private GLTaskQueue gpuThreadTaskQueue;
-    private MotionEvent lastEvent;
-    private DocumentAccessibilityHelper documentAccessibilityHelper;
-    private SurfaceTextureHolder surfaceTextureHolder;
-    public DocumentTextureView(Context context) {
-        super(context);
-        initView();
-    }
-
-    public DocumentTextureView(Context context, AttributeSet attrs) {
-        super(context, attrs);
-        initView();
-    }
-
-    public DocumentTextureView(Context context, AttributeSet attrs, int defStyleAttr) {
-        super(context, attrs, defStyleAttr);
-        initView();
-    }
-
-    public DocumentTextureView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
-        super(context, attrs, defStyleAttr, defStyleRes);
-        initView();
-    }
-
-
-    private void initView() {
-        setOpaque(false);
-        setSurfaceTextureListener(this);
-        setOnClickListener(this);
-        gpuThreadTaskQueue = new GLTaskQueue();
-        if(getLayerType() != View.LAYER_TYPE_HARDWARE) {
-            setLayerType(View.LAYER_TYPE_HARDWARE, null);
-        }
-        try{
-            documentAccessibilityHelper = new DocumentAccessibilityHelper(this);
-            ViewCompat.setAccessibilityDelegate(this, documentAccessibilityHelper);
-        }catch (Exception e){}
-    }
-
-    @Override
-    public boolean dispatchTouchEvent(MotionEvent event) {
-        lastEvent = event;
-        return super.dispatchTouchEvent(event);
-    }
-
-    @Override
-    public boolean dispatchKeyEvent(KeyEvent event) {
-        return documentAccessibilityHelper.dispatchKeyEvent(event) ||super.dispatchKeyEvent(event);
-    }
-
-    @Override
-    protected boolean dispatchHoverEvent(MotionEvent event) {
-        lastEvent = event;
-        return documentAccessibilityHelper.dispatchHoverEvent(event) || super.dispatchHoverEvent(event);
-    }
-
-    @Override
-    public void onFocusChanged(boolean gainFocus, int direction, Rect previouslyFocusedRect) {
-        super.onFocusChanged(gainFocus, direction, previouslyFocusedRect);
-        documentAccessibilityHelper.onFocusChanged(gainFocus, direction, previouslyFocusedRect);
-    }
-
-    @Override
-    public void onSurfaceTextureAvailable(final SurfaceTexture surfaceTexture, final int width, final int height) {
-        if(documentView == null){
-            return;
-        }
-        surfaceTextureHolder = new SurfaceTextureHolder(surfaceTexture, width, height);
-        documentView.setPause(false);
-
-        GLTask.waitIfTaskBlock();
-        OpenGLRenderInitTask initOpenGLRenderTask = new OpenGLRenderInitTask(documentView, surfaceTextureHolder);
-        gpuThreadTaskQueue.addTask(initOpenGLRenderTask);
-    }
-
-
-
-    @Override
-    public void onSurfaceTextureSizeChanged(SurfaceTexture surfaceTexture, int width, int height) {
-        if(documentView != null){
-            surfaceTextureHolder.setSurfaceTexture(surfaceTexture, width, height);
-            OpenGLRenderSizeChangedTask task = new OpenGLRenderSizeChangedTask(documentView, surfaceTextureHolder);
-            gpuThreadTaskQueue.addTask(task);
-            task.waitComplete();
-        }
-    }
-
-    @Override
-    public boolean onSurfaceTextureDestroyed(SurfaceTexture surfaceTexture) {
-        if(surfaceTextureHolder != null){
-            if(documentView != null){
-                documentView.setPause(true);
-            }
-            surfaceTextureHolder.setDestory(true);
-            OpenGLRenderDestroyTask openGLRenderDestroyTask = new OpenGLRenderDestroyTask(documentView, surfaceTextureHolder);
-            gpuThreadTaskQueue.addTask(openGLRenderDestroyTask);
-        }
-        surfaceTextureHolder = null;
-        return true;
-    }
-
-    @Override
-    public void onSurfaceTextureUpdated(SurfaceTexture surfaceTexture) {}
-
-
-    @Override
-    protected void onAttachedToWindow() {
-        hasAttachToWindow = true;
-        GLTask.waitIfTaskBlock();
-        super.onAttachedToWindow();
-    }
-
-    @Override
-    protected void onDetachedFromWindow() {
-        hasAttachToWindow = false;
-        GLTask.waitIfTaskBlock();
-        super.onDetachedFromWindow();
-    }
-
-    @Override
-    protected void onWindowVisibilityChanged(int visibility) {
-        super.onWindowVisibilityChanged(visibility);
-    }
-
-
-
-    public boolean isHasAttachToWindow() {
-        return hasAttachToWindow;
-    }
-
-    @Override
-    public void onClick(View v) {
-        if(documentView == null){
-            return;
-        }
-        int[] location = new int[2];
-        v.getLocationOnScreen(location);
-        float x = lastEvent.getRawX()  - location[0];
-        float y = lastEvent.getRawY() - location[1];
-        documentView.actionEvent(OnEventListener.EVENT_TYPE_CLICK, x, y);
-
-    }
-
-
-    public boolean hasDocumentView(){
-        return documentView != null;
-    }
-
-
-    public GLTaskQueue getTaskQueue() {
-        return gpuThreadTaskQueue;
-    }
-
-    public DocumentView getDocumentView(){
-        if(documentView == null){
-            documentView = new DocumentView(getContext());
-        }
-        return documentView;
-    }
-
-    public void setDocumentView(DocumentView documentView) {
-        this.documentView = documentView;
-        if(hasAttachToWindow){
-            throw new RuntimeException("setDocumentView should be be remove first");
-        }
-    }
-
-
-
-    public void destroy(){
-        if(documentView != null){
-            documentView.destory();
-        }
-    }
-
-
-
-    @Override
-    protected void finalize() throws Throwable {
-        destroy();
-        super.finalize();
-    }
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/view/DocumentView.java b/android/sdk/src/main/java/com/taobao/weex/render/view/DocumentView.java
deleted file mode 100644
index 50b43a81a9..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/view/DocumentView.java
+++ /dev/null
@@ -1,597 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.view;
-
-import android.content.Context;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-import android.text.TextUtils;
-import android.util.Log;
-
-import com.taobao.weex.render.RenderSDK;
-import com.taobao.weex.render.action.AddElementAction;
-import com.taobao.weex.render.action.AddEventAction;
-import com.taobao.weex.render.action.CreateBodyAction;
-import com.taobao.weex.render.action.MoveElementAction;
-import com.taobao.weex.render.action.RemoveElementAction;
-import com.taobao.weex.render.action.RemoveEventAction;
-import com.taobao.weex.render.action.UpdateAttrsAction;
-import com.taobao.weex.render.action.UpdateStylesAction;
-import com.taobao.weex.render.bridge.RenderBridge;
-import com.taobao.weex.render.event.DocumentAdapter;
-import com.taobao.weex.render.event.OnEventListener;
-import com.taobao.weex.render.image.BitmapTarget;
-import com.taobao.weex.render.image.RenderBitmapImageCache;
-import com.taobao.weex.render.log.RenderLog;
-import com.taobao.weex.render.threads.GpuThread;
-import com.taobao.weex.render.manager.RenderManager;
-import com.taobao.weex.render.threads.WeakRefHandler;
-import com.taobao.weex.render.task.OpenGLRender;
-
-import java.util.Collection;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.atomic.AtomicInteger;
-
-
-/**
- * Sureface Render For OpenGL Context
- * Created by furture on 2018/7/23.
- */
-public class DocumentView implements Handler.Callback {
-    /**
-     * Weex Render MSG TYPE on Gpu Thread
-     * */
-    public static final int MSG_CREATE_DOCUMENT = 0X02;
-    public static final int MSG_ATTACH_GL_RENDER = 0X03;
-    public static final int MSG_RENDER_SIZE_CHANGED = 0X04;
-    public static final int MSG_RENDER_INVALIDATE = 0X05;
-    public static final int MSG_DETACH_GL_RENDER = 0X06;
-    public static final int MSG_DESTORY_DOCUMENT = 0X07;
-    public static final int MSG_RENDER_ACTION_EVENT = 0X08;
-    public static final int MSG_RENDER_LAYOUT = 0X09;
-    public static final int MSG_RENDER_REFRESH_FONT = 0X10;
-
-
-
-    private long mNativeDocument;
-    private boolean mHasCreateBody;
-    private final long mDocumentKey;
-    private boolean destroy;
-    private volatile boolean mPause;
-    private int documentHeight;
-    private int documentWidth;
-    private Context mContext;
-    private Handler gpuHandler;
-    private Handler mainHandler;
-    private OpenGLRender mOpenGLRender;
-    private Map<String, BitmapTarget> imageTargetMap;
-    private FrameTask frameTask;
-    private AtomicInteger renderStage;
-    private FrameTask layoutTask;
-    private DocumentAdapter mDocumentAdapter;
-    private Object instance;
-    public  Object lock;
-
-
-    public DocumentView(Context context){
-        this.mContext = context;
-        this.lock = new Object();
-        mDocumentKey = RenderManager.getInstance().nextDocumentKey();
-        RenderManager.getInstance().registerDocument(mDocumentKey, this);
-        mainHandler = new Handler(Looper.getMainLooper());
-        gpuHandler = new WeakRefHandler(GpuThread.getThread().getLooper(), this);
-        if(!RenderSDK.getInstance().isInited()){
-            RenderSDK.getInstance().init();
-        }
-        gpuHandler.sendEmptyMessage(MSG_CREATE_DOCUMENT);
-        imageTargetMap = new ConcurrentHashMap<>();
-        renderStage = new AtomicInteger();
-        mPause = true;
-    }
-
-
-
-    public Context getContext() {
-        return  mContext;
-    }
-
-    public long getDocumentKey() {
-        return mDocumentKey;
-    }
-
-    public long getNativeDocument() {
-        return mNativeDocument;
-    }
-
-    public Map<String, BitmapTarget> getImageTargetMap() {
-        return imageTargetMap;
-    }
-
-    public AtomicInteger getRenderStage() {
-        return renderStage;
-    }
-
-    public boolean isPause() {
-        return mPause;
-    }
-
-
-
-    public void setPause(boolean mPause) {
-        synchronized (lock){
-            if(this.mPause != mPause){
-                this.mPause = mPause;
-                this.mOpenGLRender = null;
-                this.renderStage.incrementAndGet();
-                if(mPause){
-                    if(frameTask != null){
-                        gpuHandler.removeCallbacks(frameTask);
-                        frameTask = null;
-                    }
-                    RenderBitmapImageCache.getInstance().cacheImageTargets(mDocumentKey, imageTargetMap);
-                    imageTargetMap.clear();
-                }
-            }
-        }
-    }
-
-
-    public void actionCreateBody(String ref, Map<String, String> style, Map<String, String> attrs, Collection<String> events){
-        RenderLog.actionCreateBody(this, ref, style, attrs, events);
-        CreateBodyAction createBodyAction = new CreateBodyAction(this, ref, style, attrs, events);
-        if(gpuHandler != null){
-            gpuHandler.post(createBodyAction);
-        }
-    }
-
-    public void actionAddElement(String ref, String componentType, String parentRef, int index, Map<String, String> style, Map<String, String> attrs, Collection<String> events){
-        RenderLog.actionAddElement(this, ref, componentType, parentRef, index, style, attrs, events);
-        AddElementAction addElementAction = new AddElementAction(this, ref, componentType, parentRef, index, style, attrs, events);
-        if(gpuHandler != null){
-            gpuHandler.post(addElementAction);
-        }
-    }
-
-    public void actionUpdateAttrs(String ref, Map<String, String> attrs){
-        RenderLog.actionUpdateAttrs(this, ref, attrs);
-        UpdateAttrsAction updateAttrsAction = new UpdateAttrsAction(this, ref, attrs);
-        if(gpuHandler != null){
-            gpuHandler.post(updateAttrsAction);
-        }
-    }
-
-    public void actionUpdateStyles(String ref, Map<String, String> styles){
-        RenderLog.actionUpdateStyles(this, ref, styles);
-        if(styles == null || styles.size() <= 0){
-            return;
-        }
-        UpdateStylesAction updateStylesAction = new UpdateStylesAction(this, ref, styles);
-        if(gpuHandler != null){
-            gpuHandler.post(updateStylesAction);
-        }
-    }
-
-    public void actionAddEvent(String ref, String event){
-        RenderLog.actionAddEvent(this, ref, event);
-        AddEventAction addEventAction = new AddEventAction(this, ref, event);
-        if(gpuHandler != null){
-            gpuHandler.post(addEventAction);
-        }
-    }
-
-    public void actionRemoveEvent(String ref, String event){
-        RenderLog.actionRemoveEvent(this, ref, event);
-        RemoveEventAction removeEventAction = new RemoveEventAction(this, ref, event);
-        if(gpuHandler != null){
-            gpuHandler.post(removeEventAction);
-        }
-    }
-
-
-    public void actionMoveElement(String ref, String parentRef, int index){
-        RenderLog.actionMoveElement(this, ref, parentRef, index);
-        MoveElementAction moveElementAction = new MoveElementAction(this, ref, parentRef, index);
-        if(gpuHandler != null){
-            gpuHandler.post(moveElementAction);
-        }
-    }
-
-
-    public void actionRemoveElement(String ref){
-        RenderLog.actionRemoveElement(this, ref);
-        RemoveElementAction removeElementAction = new RemoveElementAction(this, ref);
-        if(gpuHandler != null){
-            gpuHandler.post(removeElementAction);
-        }
-    }
-
-    public void attachGLRender(OpenGLRender openGLRender){
-        if(openGLRender.getPtr() == 0){
-            throw new IllegalArgumentException("DocumentView attachGLRender mOpenGLRender ptr " + openGLRender);
-        }
-        if(this.mOpenGLRender != null){
-            this.mOpenGLRender.setWillDestory(true);
-            this.mOpenGLRender.destroy();
-        }
-        this.mOpenGLRender = openGLRender;
-        if(!openGLRender.isWillDestory()){
-            invalidate();
-        }
-    }
-
-    public void renderSizeChanged(OpenGLRender openGLRender){
-        if(mOpenGLRender != openGLRender){
-            return;
-        }
-        if(!openGLRender.isWillDestory()){
-            invalidate();
-        }
-    }
-
-
-    public OpenGLRender getOpenGLRender(){
-        return mOpenGLRender;
-    }
-
-
-    public void invalidate(){
-        if(mPause || mOpenGLRender == null){
-            return;
-        }
-        synchronized (lock){
-            if(frameTask == null){
-                frameTask = new FrameTask() {
-                    @Override
-                    public void run() {
-                        synchronized (lock){
-                            Message message = Message.obtain(gpuHandler, MSG_RENDER_INVALIDATE, renderStage.get(), 0);
-                            message.sendToTarget();
-                            frameTask = null;
-                        }
-                    }
-                };
-            }
-            gpuHandler.removeCallbacks(frameTask);
-            gpuHandler.postDelayed(frameTask, frameTask.frameTime());
-        }
-    }
-
-    public void requestLayout(){
-        synchronized (lock){
-            if(layoutTask == null){
-                layoutTask = new FrameTask() {
-                    @Override
-                    public void run() {
-                        layoutDocument();
-                        layoutTask = null;
-                    }
-                };
-            }
-        }
-        if(layoutTask.frameTime() <= 0){
-            layoutTask.run();
-        }else{
-            gpuHandler.removeCallbacks(layoutTask);
-            gpuHandler.postDelayed(layoutTask, FrameTask.FRAME_TIME);
-        }
-    }
-
-
-    public void actionEvent(int type, float x, float y){
-        if(mNativeDocument != 0){
-            Message message = Message.obtain(gpuHandler, MSG_RENDER_ACTION_EVENT, (int)x, (int)y, type);
-            message.sendToTarget();
-        }
-    }
-
-    public void refreshFont(String fontFaimly) {
-        if(TextUtils.isEmpty(fontFaimly)){
-            return;
-        }
-        if(mNativeDocument != 0){
-            Message message = Message.obtain(gpuHandler, MSG_RENDER_REFRESH_FONT, fontFaimly);
-            message.sendToTarget();
-        }
-    }
-
-    /**
-     * when load image target complete, call this method
-     * */
-    public void onLoadImageTarget(BitmapTarget target){
-        if(target == null){
-            return;
-        }
-        if(target.getBitmap() != null){
-            invalidate();
-        }
-        if(target.isPlaceholder()){
-            return;
-        }
-        if(mDocumentAdapter != null && mDocumentAdapter.getImgLoadListener() != null){
-            mDocumentAdapter.getImgLoadListener().onLoadImage(target);
-        }
-    }
-
-    public  void destory(){
-        synchronized (lock){
-            if(!isDestroy()){
-                Message message = Message.obtain(gpuHandler, MSG_DESTORY_DOCUMENT);
-                message.sendToTarget();
-                RenderManager.getInstance().removeDocument(mDocumentKey);
-                mDocumentAdapter = null;
-                mOpenGLRender = null;
-                mContext = null;
-                imageTargetMap.clear();
-                mPause = true;
-                destroy = true;
-            }
-        }
-    }
-
-    public boolean isDestroy(){
-        return destroy;
-    }
-
-    @Override
-    protected void finalize() throws Throwable {
-        if(mNativeDocument != 0){
-            if(!isDestroy()){
-                destory();
-            }
-        }
-        super.finalize();
-    }
-
-
-    @Override
-    public boolean handleMessage(Message msg) {
-            if(mPause){
-                if(msg.what == MSG_RENDER_INVALIDATE || msg.what == MSG_ATTACH_GL_RENDER){
-                    return true;
-                }
-            }
-            if(destroy){
-                if(msg.what != MSG_DESTORY_DOCUMENT){
-                    return true;
-                }
-            }
-            switch (msg.what){
-                case MSG_CREATE_DOCUMENT:{
-                    if(mNativeDocument != 0){
-                        RenderBridge.getInstance().destroyDocument(mNativeDocument);
-                        mNativeDocument = 0;
-                    }
-                    mNativeDocument =  RenderBridge.getInstance().createDocument(mDocumentKey);
-                }
-                break;
-                case MSG_DESTORY_DOCUMENT:{
-                    if(mNativeDocument != 0){
-                        destroy = true;
-                        RenderBridge.getInstance().destroyDocument(mNativeDocument);
-                        mDocumentAdapter = null;
-                        gpuHandler.removeCallbacks(null);
-                        mNativeDocument = 0;
-                    }
-                }
-                break;
-                case MSG_RENDER_INVALIDATE:{
-                    if(isCanRenderDocument()){
-                        handleInvalidate(msg.arg1);
-                    }
-                }
-                break;
-                case MSG_RENDER_LAYOUT:{
-                    layoutDocument();
-                }
-                break;
-                case MSG_RENDER_ACTION_EVENT:{
-                    if(mNativeDocument != 0){
-                        int x = msg.arg1;
-                        int y = msg.arg2;
-                        int type = (int) msg.obj;
-                        final String ref = RenderBridge.getInstance().actionEvent(mNativeDocument, 0, x, y);
-                        if(!TextUtils.isEmpty(ref)){
-                           onEvent(type, ref);
-                        }
-                    }
-                }
-                break;
-                case MSG_RENDER_REFRESH_FONT:{
-                    if(mNativeDocument != 0){
-                        String fontFamily = (String) msg.obj;
-                        RenderBridge.getInstance().actionRefreshFont(mNativeDocument, fontFamily);
-                        requestLayout();
-                    }
-                }
-                break;
-                default:
-                    break;
-            }
-            return true;
-    }
-
-
-
-    private void handleInvalidate(int token){
-        if(!isCanRender(token)){
-            return;
-        }
-        long renderPtr;
-        synchronized (lock){
-            if(frameTask != null){
-                gpuHandler.removeCallbacks(frameTask);
-                frameTask = null;
-            }
-            if(mOpenGLRender == null){
-                return;
-            }
-            renderPtr = mOpenGLRender.getPtr();
-        }
-        RenderLog.actionInvalidate(this);
-        boolean hasInvalidateDraw = RenderBridge.getInstance().invalidate(mNativeDocument, renderPtr);
-        if(!hasInvalidateDraw){
-            return;
-        }
-        if(token != renderStage.get()){
-            return;
-        }
-        synchronized (lock){
-            if(isCanRender(token)){
-                RenderLog.actionSwap(this);
-                if(mOpenGLRender != null){
-                    RenderBridge.getInstance().renderSwap(mOpenGLRender.getPtr());
-                }
-            }
-        }
-    }
-
-    private void handleDocumentSize(final int width, final int height) {
-        if(width <= 0 || height <= 0){
-            return;
-        }
-        if(documentWidth != width || height != documentHeight){
-            documentWidth = width;
-            documentHeight = height;
-            if(mDocumentAdapter == null){
-                return;
-            }
-            if(mDocumentAdapter.isSizeChangedOnMainThread()){
-                if(mDocumentAdapter != null && mDocumentAdapter.getDocumentSizeChangedListener() != null){
-                    mainHandler.post(new Runnable() {
-                        @Override
-                        public void run() {
-                            if(documentWidth == width && documentHeight == height
-                                    && mDocumentAdapter != null
-                                    && mDocumentAdapter.getDocumentSizeChangedListener() != null){
-                                mDocumentAdapter.getDocumentSizeChangedListener().onSizeChanged(DocumentView.this, width, height);
-                            }
-                        }
-                    });
-                }
-            }else{
-                if(documentWidth == width && documentHeight == height
-                        && mDocumentAdapter != null
-                        && mDocumentAdapter.getDocumentSizeChangedListener() != null){
-                    mDocumentAdapter.getDocumentSizeChangedListener().onSizeChanged(DocumentView.this, width, height);
-                }
-            }
-        }
-    }
-
-    public String hitTest(int type, int x, int y){
-        //FIXME check thread
-        if(mNativeDocument != 0) {
-            return RenderBridge.getInstance().actionEvent(mNativeDocument, type, x, y);
-        }
-        return null;
-    }
-
-    private boolean isCanRenderDocument(){
-        if(mNativeDocument == 0){
-            return false;
-        }
-        if(mPause){
-            return false;
-        }
-        if(mOpenGLRender == null || mOpenGLRender.isWillDestory()){
-            return false;
-        }
-        if(!mHasCreateBody){
-            return false;
-        }
-        return true;
-    }
-
-    private boolean isCanRender(int token){
-        if(token != renderStage.get()){
-            return false;
-        }
-        if(mNativeDocument == 0){
-            return false;
-        }
-        if(mPause){
-            return false;
-        }
-        if(mOpenGLRender == null || mOpenGLRender.isWillDestory()){
-            return false;
-        }
-        return true;
-    }
-
-
-    private void layoutDocument() {
-        if(mNativeDocument != 0){
-            RenderLog.actionLayoutExecute(this);
-            RenderBridge.getInstance().layoutIfNeed(mNativeDocument);
-            int height = RenderBridge.getInstance().documentHeight(mNativeDocument);
-            int width = RenderBridge.getInstance().documentWidth(mNativeDocument);
-            handleDocumentSize(width, height);
-            invalidate();
-        }
-    }
-
-    private void onEvent(final int eventType, final String ref) {
-        if(mDocumentAdapter != null && mDocumentAdapter.getEventListener() != null
-                && eventType == OnEventListener.EVENT_TYPE_CLICK){
-            final int x = RenderBridge.getInstance().getBlockLayout(mNativeDocument, ref, 0);
-            final int y = RenderBridge.getInstance().getBlockLayout(mNativeDocument, ref, 1);
-            final int width = RenderBridge.getInstance().getBlockLayout(mNativeDocument, ref, 2);
-            final int height = RenderBridge.getInstance().getBlockLayout(mNativeDocument, ref, 3);
-            mainHandler.post(new Runnable() {
-                @Override
-                public void run() {
-                    if(mDocumentAdapter != null && mDocumentAdapter.getEventListener() != null) {
-                        mDocumentAdapter.getEventListener().onClick(ref, x, y, width, height);
-                    }
-                }
-            });
-        }
-    }
-
-    public boolean isHasCreateBody() {
-        return mHasCreateBody;
-    }
-
-    public void setHasCreateBody(boolean mHasCreateBody) {
-        this.mHasCreateBody = mHasCreateBody;
-    }
-
-    public void setDocumentAdapter(DocumentAdapter documentAdapter) {
-        this.mDocumentAdapter = documentAdapter;
-    }
-
-    public int getDocumentHeight() {
-        return documentHeight;
-    }
-
-    public int getDocumentWidth() {
-        return documentWidth;
-    }
-
-    public Object getInstance() {
-        return instance;
-    }
-
-    public void setInstance(Object instance) {
-        this.instance = instance;
-    }
-
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/view/FrameTask.java b/android/sdk/src/main/java/com/taobao/weex/render/view/FrameTask.java
deleted file mode 100644
index 20cc465e6e..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/view/FrameTask.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.view;
-
-
-/**
- * Created by furture on 2018/7/26.
- */
-
-public abstract class FrameTask implements Runnable {
-    public static final long FRAME_TIME = 16;
-    private long start = System.currentTimeMillis();
-
-    public long frameTime(){
-       long remain = FRAME_TIME - (System.currentTimeMillis() - start);
-       if(remain < 0){
-           return 0;
-       }
-       return remain;
-    }
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/render/view/SurfaceTextureHolder.java b/android/sdk/src/main/java/com/taobao/weex/render/view/SurfaceTextureHolder.java
deleted file mode 100644
index 1bcd06e8ba..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/render/view/SurfaceTextureHolder.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.render.view;
-
-import android.graphics.SurfaceTexture;
-
-import com.taobao.weex.render.task.OpenGLRender;
-
-/**
- * Created by furture on 2018/8/29.
- */
-
-public class SurfaceTextureHolder {
-
-    private OpenGLRender openGLRender;
-    private SurfaceTexture surfaceTexture;
-    private int width;
-    private int height;
-    private volatile boolean isDestory;
-
-    public SurfaceTextureHolder(SurfaceTexture surfaceTexture, int width, int height) {
-        this.surfaceTexture = surfaceTexture;
-        this.width = width;
-        this.height = height;
-    }
-
-    public SurfaceTexture getSurfaceTexture() {
-        if(isDestory){
-            return null;
-        }
-        return surfaceTexture;
-    }
-
-    public void setSurfaceTexture(SurfaceTexture surfaceTexture, int width, int height) {
-        this.surfaceTexture = surfaceTexture;
-        this.width = width;
-        this.height = height;
-    }
-
-    public boolean isDestory() {
-        return isDestory;
-    }
-
-    public void setDestory(boolean destory) {
-        isDestory = destory;
-        if(isDestory){
-            surfaceTexture = null;
-        }
-    }
-
-    public int getWidth() {
-        return width;
-    }
-
-    public int getHeight() {
-        return height;
-    }
-
-    public OpenGLRender getOpenGLRender() {
-        return openGLRender;
-    }
-
-    public void setOpenGLRender(OpenGLRender openGLRender) {
-        this.openGLRender = openGLRender;
-    }
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/action/ActionAddRule.java b/android/sdk/src/main/java/com/taobao/weex/ui/action/ActionAddRule.java
index 2cfbdd5ebe..0f74e2bdce 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/action/ActionAddRule.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/action/ActionAddRule.java
@@ -18,17 +18,12 @@
  */
 package com.taobao.weex.ui.action;
 
-import android.content.IntentFilter;
-import android.support.v4.content.LocalBroadcastManager;
 import android.text.TextUtils;
 
 import com.alibaba.fastjson.JSONObject;
 import com.taobao.weex.WXSDKInstance;
 import com.taobao.weex.WXSDKManager;
 import com.taobao.weex.common.Constants;
-import com.taobao.weex.render.font.FontManager;
-import com.taobao.weex.render.font.FontWatchTask;
-import com.taobao.weex.ui.component.document.DocumentFontReceiver;
 import com.taobao.weex.utils.FontDO;
 import com.taobao.weex.utils.TypefaceUtil;
 
@@ -60,15 +55,6 @@ public void executeAction() {
 
     FontDO fontDO = parseFontDO(mData, instance);
     if (fontDO != null && !TextUtils.isEmpty(fontDO.getFontFamilyName())) {
-      FontWatchTask fontWatchTask = FontManager.getInstance().getFontWatchTask(fontDO.getFontFamilyName(), fontDO.getUrl());
-      if(!fontWatchTask.isLoaded()){
-        if(!fontWatchTask.isLoading()){
-           fontWatchTask.setLoading(true);
-           LocalBroadcastManager.getInstance(instance.getContext()).registerReceiver(
-                   new DocumentFontReceiver(instance, fontWatchTask),
-                   new IntentFilter(TypefaceUtil.ACTION_TYPE_FACE_AVAILABLE));
-        }
-      }
       FontDO cacheFontDO = TypefaceUtil.getFontDO(fontDO.getFontFamilyName());
       if (cacheFontDO == null || !TextUtils.equals(cacheFontDO.getUrl(), fontDO.getUrl())) {
         TypefaceUtil.putFontDO(fontDO);
@@ -78,9 +64,6 @@ public void executeAction() {
       }
     }
 
-
-
-
   }
 
   private FontDO parseFontDO(JSONObject jsonObject,WXSDKInstance instance) {
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/action/BasicComponentData.java b/android/sdk/src/main/java/com/taobao/weex/ui/action/BasicComponentData.java
index 2b7e639ec1..9d124504b2 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/action/BasicComponentData.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/action/BasicComponentData.java
@@ -60,9 +60,11 @@ public final void addStyle(Map<String, Object> styles, boolean byPesudo) {
       return;
     }
     if (mStyles == null) {
-      mStyles = new WXStyle();
+      mStyles = new WXStyle(styles);
+    }
+    else {
+      mStyles.putAll(styles, byPesudo);
     }
-    mStyles.putAll(styles, byPesudo);
   }
 
   public final void addAttr(Map<String, Object> attrs) {
@@ -70,9 +72,9 @@ public final void addAttr(Map<String, Object> attrs) {
       return;
     }
     if (mAttributes == null) {
-      mAttributes = new WXAttr();
-      mAttributes.putAllDirect(attrs);
-    }else {
+      mAttributes = new WXAttr(attrs, 0);
+    }
+    else {
       mAttributes.putAll(attrs);
     }
   }
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionAddElement.java b/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionAddElement.java
index 05008b2c8c..3295d8f777 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionAddElement.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionAddElement.java
@@ -24,14 +24,11 @@
 import android.support.annotation.WorkerThread;
 import android.support.v4.util.ArrayMap;
 import android.text.TextUtils;
-import android.util.Log;
-
 import com.taobao.weex.WXSDKInstance;
 import com.taobao.weex.WXSDKManager;
 import com.taobao.weex.common.WXErrorCode;
 import com.taobao.weex.dom.transition.WXTransition;
 import com.taobao.weex.ui.component.WXComponent;
-import com.taobao.weex.ui.component.document.WXDocumentComponent;
 import com.taobao.weex.ui.component.WXVContainer;
 import com.taobao.weex.utils.WXExceptionUtils;
 import com.taobao.weex.utils.WXLogUtils;
@@ -46,7 +43,6 @@
   private WXComponent child;
   private GraphicPosition layoutPosition;
   private GraphicSize layoutSize;
-  private WXDocumentComponent documentComponent;
 
   public GraphicActionAddElement(@NonNull WXSDKInstance instance, String ref,
                                  String componentType, String parentRef,
@@ -134,12 +130,7 @@ public GraphicActionAddElement(@NonNull WXSDKInstance instance, String ref,
               WXSDKManager.getInstance().getWXRenderManager().getWXComponent(getPageId(), mParentRef).getComponentType()),
           ext);
     }
-    if(instance.isHasDocumentSegment()){
-      documentComponent = WXDocumentComponent.getDocument(parent);
-      if(documentComponent != null){
-         documentComponent.actionAddElement(ref, componentType, parentRef, index, style, attributes, events);
-      }
-    }
+
   }
 
   @RestrictTo(Scope.LIBRARY)
@@ -175,9 +166,6 @@ public void executeAction() {
       }
       child.applyLayoutAndEvent(child);
       child.bindData(child);
-      if(documentComponent != null){
-        documentComponent.updateWatchComponentStatus();
-      }
     } catch (Exception e) {
       WXLogUtils.e("add component failed.", e);
     }
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionAddEvent.java b/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionAddEvent.java
index 78825b15b7..3ef4a6c79e 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionAddEvent.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionAddEvent.java
@@ -23,7 +23,6 @@
 import com.taobao.weex.dom.WXEvent;
 import com.taobao.weex.tracing.Stopwatch;
 import com.taobao.weex.ui.component.WXComponent;
-import com.taobao.weex.ui.component.document.WXDocumentComponent;
 
 /**
  * Created by listen on 18/01/11.
@@ -31,19 +30,10 @@
 public class GraphicActionAddEvent extends BasicGraphicAction {
 
   private final String mEvent;
-  private WXDocumentComponent documentComponent;
-
 
   public GraphicActionAddEvent(WXSDKInstance instance, String ref, Object event) {
     super(instance, ref);
     this.mEvent = WXEvent.getEventName(event);
-    WXComponent component = WXSDKManager.getInstance().getWXRenderManager().getWXComponent(getPageId(), getRef());
-    if(instance.isHasDocumentSegment()) {
-      documentComponent = WXDocumentComponent.getDocument(component);
-      if (documentComponent != null) {
-        documentComponent.actionAddEvent(ref, event);
-      }
-    }
   }
 
   @Override
@@ -58,9 +48,6 @@ public void executeAction() {
       component.getEvents().addEvent(mEvent);
     }
     component.addEvent(mEvent);
-    if(documentComponent != null){
-        documentComponent.updateWatchComponentStatus();
-    }
     Stopwatch.split("addEventToComponent");
   }
 }
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionMoveElement.java b/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionMoveElement.java
index 61af642193..7523120103 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionMoveElement.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionMoveElement.java
@@ -23,7 +23,6 @@
 
 import com.taobao.weex.WXSDKManager;
 import com.taobao.weex.ui.component.WXComponent;
-import com.taobao.weex.ui.component.document.WXDocumentComponent;
 import com.taobao.weex.ui.component.WXVContainer;
 
 public class GraphicActionMoveElement extends BasicGraphicAction {
@@ -35,13 +34,6 @@ public GraphicActionMoveElement(WXSDKInstance instance, String ref, String paren
     super(instance, ref);
     this.mParentref = parentRef;
     this.mIndex = index;
-    WXComponent component = WXSDKManager.getInstance().getWXRenderManager().getWXComponent(getPageId(), getRef());
-    if(instance.isHasDocumentSegment()) {
-      WXDocumentComponent documentComponent = WXDocumentComponent.getDocument(component);
-      if (documentComponent != null) {
-        documentComponent.actionMoveElement(ref, parentRef, index);
-      }
-    }
   }
 
   @Override
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionRemoveElement.java b/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionRemoveElement.java
index 77217a1342..b7e45512ef 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionRemoveElement.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionRemoveElement.java
@@ -24,7 +24,6 @@
 import com.taobao.weex.WXSDKManager;
 import com.taobao.weex.ui.component.WXComponent;
 import com.taobao.weex.ui.component.WXVContainer;
-import com.taobao.weex.ui.component.document.WXDocumentComponent;
 
 public class GraphicActionRemoveElement extends BasicGraphicAction {
 
@@ -38,14 +37,6 @@ public void executeAction() {
     if (component == null || component.getParent() == null || component.getInstance() == null) {
       return;
     }
-
-    if(component.getInstance().isHasDocumentSegment()) {
-      WXDocumentComponent documentComponent = WXDocumentComponent.getDocument(component);
-      if (documentComponent != null) {
-        documentComponent.actionRemoveElement(getRef());
-      }
-    }
-
     clearRegistryForComponent(component);
     WXVContainer parent = component.getParent();
 
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionRemoveEvent.java b/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionRemoveEvent.java
index 2399727096..67fe1335b1 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionRemoveEvent.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionRemoveEvent.java
@@ -23,7 +23,6 @@
 import com.taobao.weex.dom.WXEvent;
 import com.taobao.weex.tracing.Stopwatch;
 import com.taobao.weex.ui.component.WXComponent;
-import com.taobao.weex.ui.component.document.WXDocumentComponent;
 
 /**
  * Created by listen on 18/01/11.
@@ -35,14 +34,6 @@
   public GraphicActionRemoveEvent(WXSDKInstance instance, String ref, Object event) {
     super(instance, ref);
     this.mEvent = WXEvent.getEventName(event);
-
-    if(instance.isHasDocumentSegment()) {
-      WXComponent component = WXSDKManager.getInstance().getWXRenderManager().getWXComponent(getPageId(), getRef());
-      WXDocumentComponent documentComponent = WXDocumentComponent.getDocument(component);
-      if (documentComponent != null) {
-        documentComponent.actionRemoveEvent(ref, event);
-      }
-    }
   }
 
   @Override
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 f0da9d89d2..4e6a00f295 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
@@ -21,7 +21,6 @@
 import com.taobao.weex.WXSDKInstance;
 import com.taobao.weex.WXSDKManager;
 import com.taobao.weex.ui.component.WXComponent;
-import com.taobao.weex.ui.component.document.WXDocumentComponent;
 
 import java.util.Map;
 
@@ -42,13 +41,6 @@ public GraphicActionUpdateAttr(WXSDKInstance instance, String ref,
     if (mAttrs != null) {
       component.addAttr(mAttrs);
     }
-
-    if(instance.isHasDocumentSegment()) {
-      WXDocumentComponent documentComponent = WXDocumentComponent.getDocument(component);
-      if (documentComponent != null) {
-        documentComponent.actionUpdateAttrs(ref, attrs);
-      }
-    }
   }
 
   @Override
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionUpdateStyle.java b/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionUpdateStyle.java
index 932b0f7e19..e464cc1f1b 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionUpdateStyle.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionUpdateStyle.java
@@ -27,7 +27,6 @@
 import com.taobao.weex.dom.CSSShorthand;
 import com.taobao.weex.dom.transition.WXTransition;
 import com.taobao.weex.ui.component.WXComponent;
-import com.taobao.weex.ui.component.document.WXDocumentComponent;
 
 import java.util.Map;
 
@@ -80,13 +79,6 @@ public GraphicActionUpdateStyle(WXSDKInstance instance, String ref,
     if (null != borders) {
       component.setBorders(borders);
     }
-
-    if(instance.isHasDocumentSegment()) {
-      WXDocumentComponent documentComponent = WXDocumentComponent.getDocument(component);
-      if (documentComponent != null) {
-        documentComponent.actionUpdateStyles(ref, style);
-      }
-    }
   }
 
   public GraphicActionUpdateStyle(WXSDKInstance instance, String ref,
@@ -124,12 +116,6 @@ public GraphicActionUpdateStyle(WXSDKInstance instance, String ref,
     if (null != borders) {
       component.addShorthand(borders);
     }
-    if(instance.isHasDocumentSegment()) {
-      WXDocumentComponent documentComponent = WXDocumentComponent.getDocument(component);
-      if (documentComponent != null) {
-        documentComponent.actionUpdateStyles(ref, style);
-      }
-    }
   }
 
   @Override
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/AppearanceHelper.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/AppearanceHelper.java
index dfa1d9522b..4481be8170 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/AppearanceHelper.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/AppearanceHelper.java
@@ -98,9 +98,6 @@ public int setAppearStatus(boolean newIsAppear) {
   }
 
   public boolean isViewVisible(boolean isList) {
-    if(mAwareChild.getHostView() == null){
-      return false;
-    }
     View view = mAwareChild.getHostView();
     if(isList){
       if(view.getVisibility() == View.VISIBLE){
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXA.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXA.java
index 63511cee40..e0b84426a1 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXA.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXA.java
@@ -27,7 +27,7 @@
 import com.taobao.weex.utils.ATagUtil;
 
 @Component(lazyload = false)
-public class WXA extends WXDiv implements WXComponent.OnClickListener {
+public class WXA extends WXDiv {
 
   @Deprecated
   public WXA(WXSDKInstance instance, WXVContainer parent, String instanceId, boolean isLazy, BasicComponentData basicComponentData) {
@@ -40,7 +40,16 @@ public WXA(WXSDKInstance instance, WXVContainer parent, BasicComponentData basic
 
   @Override
   protected void onHostViewInitialized(WXFrameLayout host) {
-    addClickListener(this);
+    addClickListener(new OnClickListener() {
+      @Override
+      public void onHostViewClick() {
+        String href;
+        WXAttr attr = getAttrs();
+        if (attr !=null && (href = (String)attr.get("href")) != null) {
+          ATagUtil.onClick(null, getInstanceId(), href);
+        }
+      }
+    });
     super.onHostViewInitialized(host);
   }
 
@@ -52,13 +61,4 @@ protected boolean setProperty(String key, Object param) {
     }
     return super.setProperty(key, param);
   }
-
-  @Override
-  public void onHostViewClick() {
-    String href;
-    WXAttr attr = getAttrs();
-    if (attr !=null && (href = (String)attr.get("href")) != null) {
-      ATagUtil.onClick(null, getInstanceId(), href);
-    }
-  }
 }
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
index 9a214a3411..7840b9a394 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
@@ -86,7 +86,6 @@
 import com.taobao.weex.ui.animation.WXAnimationModule;
 import com.taobao.weex.ui.component.basic.WXBasicComponent;
 import com.taobao.weex.ui.component.binding.Statements;
-import com.taobao.weex.ui.component.document.WXDocumentComponent;
 import com.taobao.weex.ui.component.list.WXCell;
 import com.taobao.weex.ui.component.list.template.jni.NativeRenderObjectUtils;
 import com.taobao.weex.ui.component.pesudo.OnActivePseudoListner;
@@ -182,12 +181,6 @@
   private ContentBoxMeasurement contentBoxMeasurement;
   private WXTransition mTransition;
   private GraphicSize mPseudoResetGraphicSize;
-
-
-  private boolean documentNodeHasAppear;
-  private boolean documentHasDisappear = true;
-
-
   @Nullable
   private ConcurrentLinkedQueue<Pair<String, Map<String, Object>>> animations;
 
@@ -955,7 +948,7 @@ public final void setLayout(WXComponent component) {
     }
 
     //calculate first screen time
-    if (isFirstScreenComponent() && mAbsoluteY + realHeight > mInstance.getWeexHeight() + 1) {
+    if (!(mHost instanceof ViewGroup) && mAbsoluteY + realHeight > mInstance.getWeexHeight() + 1) {
       if (!mInstance.mEnd){
         mInstance.onOldFsRenderTimeLogic();
       }
@@ -972,13 +965,6 @@ public final void setLayout(WXComponent component) {
     setComponentLayoutParams(realWidth, realHeight, realLeft, realTop, realRight, realBottom, rawOffset);
   }
 
-  private boolean isFirstScreenComponent(){
-    if(this instanceof  WXDocumentComponent){
-      return true;
-    }
-    return !(mHost instanceof ViewGroup);
-  }
-
   private void setComponentLayoutParams(int realWidth, int realHeight, int realLeft, int realTop,
                                         int realRight, int realBottom, Point rawOffset) {
     if(getInstance() == null || getInstance().isDestroy()){
@@ -1902,31 +1888,6 @@ public void notifyAppearStateChange(String wxEventType, String direction) {
     }
   }
 
-  public void documentNodeAppearChange(String wxEventType, String direction) {
-    if(containsEvent(Constants.Event.APPEAR) || containsEvent(Constants.Event.DISAPPEAR) ){
-        boolean appearChanged = false;
-        if(Constants.Event.APPEAR.equals(wxEventType)){
-          if(!documentNodeHasAppear){
-            documentNodeHasAppear = true;
-            appearChanged = true;
-          }
-          documentHasDisappear = false;
-        }else if(Constants.Event.DISAPPEAR.equals(wxEventType)){
-          if(!documentHasDisappear){
-            documentHasDisappear = true;
-            appearChanged = true;
-          }
-          documentNodeHasAppear = false;
-        }
-        if(appearChanged && containsEvent(wxEventType)){
-          Map<String, Object> params = new HashMap<>();
-          params.put(Constants.Name.DIRECTION, direction);
-          fireEvent(wxEventType, params);
-        }
-    }
-  }
-
-
   public boolean isUsing() {
     return isUsing;
   }
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXImage.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXImage.java
index 0351d5c3a6..061c9bfa0c 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXImage.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXImage.java
@@ -320,13 +320,21 @@ private void setRemoteSrc(Uri rewrited, int blurRadius) {
       @Override
       public void onImageFinish(String url, ImageView imageView, boolean result, Map extra) {
         if (getEvents().contains(Constants.Event.ONLOAD)) {
-          int width = 0;
-          int height = 0;
+          Map<String, Object> params = new HashMap<String, Object>();
+          Map<String, Object> size = new HashMap<>(2);
           if (imageView != null && imageView instanceof Measurable) {
-               width =  ((Measurable) imageView).getNaturalWidth();
-               height = ((Measurable) imageView).getNaturalHeight();
+            size.put("naturalWidth", ((Measurable) imageView).getNaturalWidth());
+            size.put("naturalHeight", ((Measurable) imageView).getNaturalHeight());
+          } else {
+            size.put("naturalWidth", 0);
+            size.put("naturalHeight", 0);
+          }
+
+          if (containsEvent(Constants.Event.ONLOAD)) {
+            params.put("success", result);
+            params.put("size", size);
+            fireEvent(Constants.Event.ONLOAD, params);
           }
-          fireImageOnLoad(width, height, result);
         }
         monitorImgSize(imageView,rewritedStr);
       }
@@ -455,20 +463,6 @@ public void onSaveFailed(String errorDesc) {
     });
   }
 
-  public void fireImageOnLoad(int width, int height, boolean result){
-    if (getEvents().contains(Constants.Event.ONLOAD)) {
-      Map<String, Object> params = new HashMap<String, Object>();
-      Map<String, Object> size = new HashMap<>(2);
-      size.put("naturalWidth", width);
-      size.put("naturalHeight", height);
-      if (containsEvent(Constants.Event.ONLOAD)) {
-        params.put("success", result);
-        params.put("size", size);
-        fireEvent(Constants.Event.ONLOAD, params);
-      }
-    }
-  }
-
   private String preImgUrlStr = "";
   private void monitorImgSize(ImageView imageView,String currentImgUrlStr){
     if (null == imageView){
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/document/DocumentFontReceiver.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/document/DocumentFontReceiver.java
deleted file mode 100644
index c1dd83cc25..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/document/DocumentFontReceiver.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.ui.component.document;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.support.v4.content.LocalBroadcastManager;
-import android.text.TextUtils;
-
-import com.taobao.weex.WXSDKInstance;
-import com.taobao.weex.render.font.FontWatchTask;
-import com.taobao.weex.render.manager.RenderManager;
-import com.taobao.weex.render.view.DocumentView;
-
-import java.lang.ref.WeakReference;
-import java.util.Map;
-import java.util.Set;
-
-
-/**
- * Created by furture on 2018/8/30.
- */
-
-public class DocumentFontReceiver extends BroadcastReceiver {
-
-    private WXSDKInstance instance;
-    private FontWatchTask fontWatchTask;
-
-    public DocumentFontReceiver(WXSDKInstance instance, FontWatchTask fontWatchTask) {
-        this.instance = instance;
-        this.fontWatchTask = fontWatchTask;
-    }
-
-    @Override
-    public void onReceive(Context context, Intent intent) {
-        if(instance == null){
-            return;
-        }
-        String fontFamily = intent.getStringExtra("fontFamily");
-        String filePath = intent.getStringExtra("filePath");
-        if(TextUtils.equals(fontFamily, fontWatchTask.getFontFaimly())){
-            LocalBroadcastManager.getInstance(instance.getContext()).unregisterReceiver(this);
-            Map<Long,WeakReference<DocumentView>> maps =  RenderManager.getInstance().getDocumentsMap();
-            Set<Map.Entry<Long,WeakReference<DocumentView>>> entrySet = maps.entrySet();
-            for(Map.Entry<Long,WeakReference<DocumentView>> entry : entrySet){
-                DocumentView documentView = entry.getValue().get();
-                if(documentView == null){
-                    continue;
-                }
-                if(documentView.getInstance() != instance){
-                    continue;
-                }
-                fontWatchTask.addWatchDocument(documentView);
-            }
-            fontWatchTask.notifyFontReadyWithFilePath(filePath);
-            instance = null;
-        }
-    }
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/document/InitDocumentViewAction.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/document/InitDocumentViewAction.java
deleted file mode 100644
index fbbfe622a3..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/document/InitDocumentViewAction.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.ui.component.document;
-
-import com.taobao.weex.WXSDKInstance;
-import com.taobao.weex.ui.action.BasicGraphicAction;
-import com.taobao.weex.ui.component.WXVContainer;
-
-/**
- * Created by furture on 2018/9/4.
- */
-
-public class InitDocumentViewAction extends BasicGraphicAction {
-
-    private WXDocumentComponent documentComponent;
-
-
-    public InitDocumentViewAction(WXDocumentComponent documentComponent) {
-        super(documentComponent.getInstance(), documentComponent.getRef());
-        this.documentComponent = documentComponent;
-    }
-
-    @Override
-    public void executeAction() {
-        if(documentComponent.getHostView() != null){
-            return;
-        }
-        documentComponent.lazy(false);
-        WXVContainer parent = documentComponent.getParent();
-        if(parent != null){
-            int index = parent.indexOf(documentComponent);
-            parent.createChildViewAt(index);
-        }
-        documentComponent.applyLayoutAndEvent(documentComponent);
-        documentComponent.bindData(documentComponent);
-    }
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/document/WXDocumentComponent.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/document/WXDocumentComponent.java
deleted file mode 100644
index c3a08e8954..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/document/WXDocumentComponent.java
+++ /dev/null
@@ -1,368 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.ui.component.document;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import android.view.ViewGroup;
-import android.widget.FrameLayout;
-
-import com.taobao.weex.WXSDKInstance;
-import com.taobao.weex.WXSDKManager;
-import com.taobao.weex.adapter.IWXUserTrackAdapter;
-import com.taobao.weex.common.Constants;
-import com.taobao.weex.render.event.DocumentAdapter;
-import com.taobao.weex.render.event.OnEventListener;
-import com.taobao.weex.render.event.OnImgLoadListener;
-import com.taobao.weex.render.image.BitmapTarget;
-import com.taobao.weex.render.view.DocumentTextureView;
-import com.taobao.weex.render.view.DocumentView;
-import com.taobao.weex.ui.ComponentCreator;
-import com.taobao.weex.ui.action.BasicComponentData;
-import com.taobao.weex.ui.action.GraphicPosition;
-import com.taobao.weex.ui.action.GraphicSize;
-import com.taobao.weex.ui.component.WXA;
-import com.taobao.weex.ui.component.WXBasicComponentType;
-import com.taobao.weex.ui.component.WXComponent;
-import com.taobao.weex.ui.component.WXImage;
-import com.taobao.weex.ui.component.WXVContainer;
-import com.taobao.weex.utils.WXDataStructureUtil;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Created by furture on 2018/8/7.
- */
-
-public class WXDocumentComponent extends WXVContainer<ViewGroup> implements OnImgLoadListener, OnEventListener {
-
-    public static final String DOCUMENT_COMPONENT = "segment";
-
-    private DocumentView documentView;
-    private DocumentAdapter documentAdapter;
-    public  DocumentTextureView documentTextureView;
-    private WXDocumentHelper documentHelper;
-    private WXDocumentMeasurement documentMeasurement;
-    private boolean documentShouldInited;
-
-    public void updateWatchComponentStatus() {
-        if(documentHelper != null){
-            documentHelper.updateChildWatchEvents();
-        }
-    }
-
-
-
-    public static class Ceator implements ComponentCreator {
-        public WXComponent createInstance(WXSDKInstance instance, WXVContainer parent, BasicComponentData basicComponentData) throws IllegalAccessException, InvocationTargetException, InstantiationException {
-            return new WXDocumentComponent(instance, parent, basicComponentData);
-        }
-    }
-    public WXDocumentComponent(WXSDKInstance instance, WXVContainer parent, String instanceId, boolean isLazy, BasicComponentData basicComponentData) {
-       this(instance, parent, basicComponentData);
-    }
-
-    public WXDocumentComponent(WXSDKInstance instance, WXVContainer parent, boolean lazy, BasicComponentData basicComponentData) {
-        this(instance, parent, basicComponentData);
-    }
-
-    public WXDocumentComponent(WXSDKInstance instance, WXVContainer parent, BasicComponentData basicComponentData) {
-        super(instance, parent, basicComponentData);
-        lazy(true);
-        instance.setHasDocumentSegment(true);
-        actionCreateBody();
-        setContentBoxMeasurement(documentMeasurement);
-    }
-
-
-    @Override
-    protected FrameLayout initComponentHostView(@NonNull Context context) {
-        documentTextureView = new DocumentTextureView(context);
-        documentTextureView.setDocumentView(documentView);
-        FrameLayout frameLayout = new FrameLayout(context);
-        frameLayout.addView(documentTextureView, new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
-       return frameLayout;
-    }
-
-    @Override
-    public void addChild(WXComponent child, int index) {
-        if(child != null){
-            child.lazy(true);
-        }
-        super.addChild(child, index);
-    }
-
-    private void actionCreateBody(){
-        documentView = new DocumentView(getContext());
-        documentView.setInstance(getInstance());
-        documentAdapter = new DocumentAdapter();
-        documentAdapter.setSizeChangedOnMainThread(false);
-        documentMeasurement = new WXDocumentMeasurement(this);
-        documentAdapter.setOnDocumentSizeChangedListener(documentMeasurement);
-        documentAdapter.setOnImgLoadListener(this);
-        documentAdapter.setOnEventListener(this);
-        documentView.setDocumentAdapter(documentAdapter);
-        documentHelper = new WXDocumentHelper(this);
-
-
-        String ref = getRef();
-        Map<String, String> styles =  toMap(getStyles());
-        Map<String, String> attrs = toMap(getAttrs());
-        Collection<String> events = getEvents();
-        actionCreateBody(ref, styles, attrs, events);
-    }
-
-    public void actionCreateBody(String ref, Map<String, String> style, Map<String, String> attrs, Collection<String> events){
-        documentView.actionCreateBody(ref, style, attrs, events);
-    }
-
-    public void actionAddElement(String ref, String componentType, String parentRef, int index, Map<String, String> style, Map<String, String> attrs, Collection<String> events){
-        documentView.actionAddElement(ref, componentType, parentRef, index, style, attrs, events);
-    }
-
-    public void actionUpdateStyles(String ref, Map<String, Object> styles){
-        Map<String, String> stylesStrs = new HashMap<>();
-        Set<Map.Entry<String, Object>> entries = styles.entrySet();
-        for(Map.Entry<String, Object> entry : entries){
-            stylesStrs.put(entry.getKey(), entry.getValue().toString());
-        }
-        documentView.actionUpdateStyles(ref, stylesStrs);
-    }
-
-    public void actionUpdateAttrs(String ref, Map<String, String> attrs){
-        documentView.actionUpdateAttrs(ref, attrs);
-    }
-
-    public void actionAddEvent(String ref, Object event){
-        documentView.actionAddEvent(ref, event.toString());
-
-    }
-
-    public void actionRemoveEvent(String ref, Object event) {
-        documentView.actionRemoveEvent(ref, event.toString());
-    }
-
-
-    public void actionMoveElement(String ref, String parentRef, int index){
-        documentView.actionMoveElement(ref, parentRef, index);
-    }
-
-    public void actionRemoveElement(String ref) {
-        documentView.actionRemoveElement(ref);
-    }
-
-
-
-    @Override
-    public void updateStyles(WXComponent component) {
-        if(component != this){
-            documentView.actionUpdateStyles(getRef(),toMap(component.getStyles()));
-        }
-    }
-    @Override
-    public void updateAttrs(WXComponent component) {
-        if(component != this){
-            documentView.actionUpdateAttrs(getRef(),toMap(component.getAttrs()));
-        }
-    }
-
-    @Override
-    public void updateStyles(Map<String, Object> styles) {
-        documentView.actionUpdateStyles(getRef(),toMap(styles));
-    }
-
-    @Override
-    public void updateAttrs(Map<String, Object> attrs) {
-        documentView.actionUpdateAttrs(getRef(),toMap(attrs));
-    }
-
-    @Override
-    public void onActivityResume() {
-        super.onActivityResume();
-    }
-
-    @Override
-    public void updateProperties(Map<String, Object> props) {}
-
-    protected boolean setProperty(String key, Object param) {
-        switch (key) {
-            case Constants.Name.BACKGROUND_COLOR:
-                return true;
-            case Constants.Name.OPACITY:
-                return true;
-            case Constants.Name.BORDER_RADIUS:
-            case Constants.Name.BORDER_TOP_LEFT_RADIUS:
-            case Constants.Name.BORDER_TOP_RIGHT_RADIUS:
-            case Constants.Name.BORDER_BOTTOM_RIGHT_RADIUS:
-            case Constants.Name.BORDER_BOTTOM_LEFT_RADIUS:
-                return true;
-            case Constants.Name.BORDER_STYLE:
-            case Constants.Name.BORDER_RIGHT_STYLE:
-            case Constants.Name.BORDER_BOTTOM_STYLE:
-            case Constants.Name.BORDER_LEFT_STYLE:
-            case Constants.Name.BORDER_TOP_STYLE:
-                return true;
-            case Constants.Name.BORDER_COLOR:
-            case Constants.Name.BORDER_TOP_COLOR:
-            case Constants.Name.BORDER_RIGHT_COLOR:
-            case Constants.Name.BORDER_BOTTOM_COLOR:
-            case Constants.Name.BORDER_LEFT_COLOR:
-                return true;
-            case Constants.Name.BOX_SHADOW:
-                return true;
-            default:break;
-        }
-        return super.setProperty(key, param);
-    }
-
-    @Override
-    public void setBorderRadius(String key, float borderRadius) {}
-
-    @Override
-    public void setBorderStyle(String key, String borderStyle) {}
-
-    @Override
-    public void setBorderWidth(String key, float borderWidth) {}
-
-
-
-
-    @Override
-    public void destroy() {
-        synchronized (this){
-            super.destroy();
-        }
-        if(documentTextureView != null){
-            documentTextureView.destroy();
-        }
-    }
-
-    private Map<String, String> toMap(Map<String, Object> style){
-        if(style == null){
-            return null;
-        }
-        Map<String, String> maps = new HashMap<>();
-        Set<Map.Entry<String,Object>> entries = style.entrySet();
-        for(Map.Entry<String,Object> entry: entries){
-            if(entry.getValue() == null){
-                continue;
-            }
-            maps.put(entry.getKey(), entry.getValue().toString());
-        }
-        return maps;
-    }
-
-
-
-    public static  WXDocumentComponent getDocument(WXComponent parent){
-        while (parent != null){
-            if(DOCUMENT_COMPONENT.equals(parent.getComponentType())){
-                return (WXDocumentComponent) parent;
-            }
-            if(WXBasicComponentType.CELL.equals(parent.getComponentType())){
-                return null;
-            }
-            if(WXBasicComponentType.LIST.equals(parent.getComponentType())){
-                return null;
-            }
-            parent = parent.getParent();
-        }
-        return null;
-    }
-
-    @Override
-    public void notifyAppearStateChange(String wxEventType, String direction) {
-        if(documentHelper != null){
-            documentHelper.notifyAppearStateChange(wxEventType, direction);
-        }
-    }
-
-    @Override
-    public void setDemission(GraphicSize size, GraphicPosition position) {
-        super.setDemission(size, position);
-        if(getHostView() == null){
-            if(documentShouldInited){
-                new InitDocumentViewAction(this).run();
-            }
-        }
-    }
-
-    @Override
-    public void onLoadImage(BitmapTarget imageTarget) {
-        if(imageTarget.isPlaceholder()){
-            return;
-        }
-        WXComponent component = WXSDKManager.getInstance().getWXRenderManager().getWXComponent(getInstanceId(), imageTarget.getRef());
-        if(component == null || !(component instanceof WXImage)){
-            return;
-        }
-        WXImage image = (WXImage) component;
-        int width = 0;
-        int height =0;
-        boolean result = false;
-        if(imageTarget.getBitmap() != null){
-            width = imageTarget.getBitmap().getWidth();
-            height = imageTarget.getBitmap().getHeight();
-            result = true;
-        }
-        image.fireImageOnLoad(width, height, result);
-    }
-
-    @Override
-    public void onClick(String ref, int x, int y, int width, int height) {
-        if(getHostView() == null || isDestoryed()){
-            return;
-        }
-        WXComponent component = WXSDKManager.getInstance().getWXRenderManager().getWXComponent(getInstanceId(), ref);
-        if(component == null){
-            return;
-        }
-        int[] location = new int[2];
-        getHostView().getLocationOnScreen(location);
-        x += location[0];
-        y += location[1];
-        Map<String, Object> param = WXDataStructureUtil.newHashMapWithExpectedSize(1);
-        Map<String, Object> position = WXDataStructureUtil.newHashMapWithExpectedSize(4);
-        position.put("x", x);
-        position.put("y",y);
-        position.put("width", width);
-        position.put("height", height);
-        param.put(Constants.Name.POSITION, position);
-        component.fireEvent(Constants.Event.CLICK, param);
-        if(component instanceof WXA){
-            ((WXA)(component)).onHostViewClick();
-        }
-    }
-
-    public DocumentView getDocumentView() {
-        return documentView;
-    }
-
-    public boolean isDocumentShouldInited() {
-        return documentShouldInited;
-    }
-
-    public void setDocumentShouldInited(boolean documentShouldInited) {
-        this.documentShouldInited = documentShouldInited;
-    }
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/document/WXDocumentHelper.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/document/WXDocumentHelper.java
deleted file mode 100644
index c56e58a45d..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/document/WXDocumentHelper.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.ui.component.document;
-
-import android.os.Handler;
-import android.os.Looper;
-
-import com.taobao.weex.common.Constants;
-import com.taobao.weex.ui.component.WXComponent;
-import com.taobao.weex.ui.component.WXVContainer;
-
-/**
- * handler appear, disappear, accessibility etc
- * Created by furture on 2018/8/21.
- */
-public class WXDocumentHelper {
-
-    private WXDocumentComponent documentComponent;
-    private boolean isAppear;
-    private Handler mainHandler;
-    private Runnable updateWatchEventsRunnable;
-
-
-    public WXDocumentHelper(WXDocumentComponent documentComponent) {
-        this.documentComponent = documentComponent;
-        this.isAppear = false;
-        this.mainHandler = new Handler(Looper.getMainLooper());
-    }
-
-    public void updateChildWatchEvents(){
-        if(updateWatchEventsRunnable == null){
-            updateWatchEventsRunnable = new Runnable() {
-                @Override
-                public void run() {
-                    updateChildWatchEventRun();
-                    updateWatchEventsRunnable = null;
-                }
-            };
-        }
-        mainHandler.removeCallbacks(updateWatchEventsRunnable);
-        mainHandler.postDelayed(updateWatchEventsRunnable, 60);
-    }
-
-
-    public void notifyAppearStateChange(String wxEventType, String direction) {
-        if(Constants.Event.APPEAR.equals(wxEventType)){
-            if(isAppear){
-                return;
-            }
-            isAppear = true;
-        }else if(Constants.Event.DISAPPEAR.equals(wxEventType)){
-            if(!isAppear){
-                return;
-            }
-            isAppear = false;
-        }
-        notifyDocumentAppearEvent(documentComponent, direction);
-    }
-
-
-    private void updateChildWatchEventRun(){
-        if(documentComponent.containsEvent(Constants.Event.APPEAR) || documentComponent.containsEvent(Constants.Event.DISAPPEAR)){
-            notifyDocumentAppearEvent(documentComponent, "up");
-            return;
-        }
-        boolean needWatch = needWatchAppearDisappearEvent(documentComponent);
-        if(!needWatch){
-            return;
-        }
-        documentComponent.getEvents().addEvent(Constants.Event.APPEAR);
-        documentComponent.getEvents().addEvent(Constants.Event.DISAPPEAR);
-        if(documentComponent.getHostView() != null){
-            documentComponent.addEvent(Constants.Event.APPEAR);
-            documentComponent.addEvent(Constants.Event.DISAPPEAR);
-        }
-        notifyDocumentAppearEvent(documentComponent, "up");
-    }
-
-    private boolean needWatchAppearDisappearEvent(WXComponent component){
-        if(component.getEvents().contains(Constants.Event.APPEAR)
-                || component.getEvents().contains(Constants.Event.DISAPPEAR)){
-            return true;
-        }
-        if(component instanceof WXVContainer){
-            WXVContainer container = (WXVContainer) component;
-            for(int i=0; i<container.getChildCount(); i++){
-                if(needWatchAppearDisappearEvent(container.getChild(i))){
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-
-    private void notifyDocumentAppearEvent(WXComponent component, String direction){
-        if(component.getHostView() == null){
-            return;
-        }
-        notifyDocumentChildAppearEvent(component, direction);
-    }
-
-    private void notifyDocumentChildAppearEvent(WXComponent component, String direction){
-        if(isAppear){
-            component.documentNodeAppearChange(Constants.Event.APPEAR, direction);
-        }else{
-            component.documentNodeAppearChange(Constants.Event.DISAPPEAR, direction);
-        }
-        if(component instanceof WXVContainer){
-            WXVContainer container = (WXVContainer) component;
-            for(int i=0; i<container.getChildCount(); i++){
-                notifyDocumentChildAppearEvent(container.getChild(i), direction);
-            }
-        }
-    }
-
-
-
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/document/WXDocumentMeasurement.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/document/WXDocumentMeasurement.java
deleted file mode 100644
index a55e89a9ba..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/document/WXDocumentMeasurement.java
+++ /dev/null
@@ -1,202 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.ui.component.document;
-
-import android.util.Log;
-
-import com.alibaba.fastjson.JSON;
-import com.taobao.weex.WXSDKManager;
-import com.taobao.weex.bridge.WXBridgeManager;
-import com.taobao.weex.common.Constants;
-import com.taobao.weex.layout.ContentBoxMeasurement;
-import com.taobao.weex.layout.MeasureMode;
-import com.taobao.weex.render.event.OnDocumentSizeChangedListener;
-import com.taobao.weex.render.view.DocumentView;
-import com.taobao.weex.utils.WXUtils;
-import com.taobao.weex.utils.WXViewUtils;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Created by furture on 2018/8/23.
- */
-
-public class WXDocumentMeasurement extends ContentBoxMeasurement implements OnDocumentSizeChangedListener, Runnable {
-
-
-    private WXDocumentComponent documentComponent;
-    private float lastComputedWidth;
-    private float lastComputedHeight;
-    private float maxHeight;
-    private float maxWidth;
-
-    public WXDocumentMeasurement(WXDocumentComponent documentComponent) {
-        this.documentComponent = documentComponent;
-        this.maxHeight = WXViewUtils.getScreenHeight(documentComponent.getContext())*2;
-        this.maxWidth = maxHeight;
-    }
-
-
-
-    @Override
-    public void measureInternal(float width, float height, int widthMeasureMode, int heightMeasureMode) {
-        if(documentComponent.getDocumentView() == null){
-            return;
-        }
-        if(documentComponent.getDocumentView().getDocumentWidth() <= 0
-                || documentComponent.getDocumentView().getDocumentHeight() <= 0){
-            return;
-        }
-        if(widthMeasureMode != MeasureMode.EXACTLY){
-            mMeasureWidth = documentComponent.getDocumentView().getDocumentWidth();
-            if(mMeasureWidth > maxWidth){
-                mMeasureWidth  = maxWidth;
-            }
-        }else{
-            mMeasureWidth = width;
-        }
-        if(heightMeasureMode != MeasureMode.EXACTLY){
-            mMeasureHeight = documentComponent.getDocumentView().getDocumentHeight();
-            if(mMeasureHeight > maxHeight){
-                mMeasureHeight  = maxHeight;
-            }
-        }else{
-            mMeasureHeight= height;
-        }
-    }
-
-    @Override
-    public void layoutBefore() {
-
-    }
-
-    @Override
-    public void layoutAfter(float computedWidth, float computedHeight) {
-        if(computedWidth <= 0 || computedHeight <= 0 || Float.isNaN(computedHeight)){
-            return;
-        }
-        if(computedWidth >= maxWidth){
-            return;
-        }
-        if(computedHeight >= maxHeight){
-            return;
-        }
-
-        componentShouldInit();
-        if(documentComponent.getDocumentView() == null){
-            return;
-        }
-        if(lastComputedWidth != computedWidth || lastComputedHeight != computedHeight){
-            lastComputedWidth = computedWidth;
-            lastComputedHeight = computedHeight;
-
-            Map<String,Object> map = null;
-            if(shouldUpdateHeight(computedHeight)){
-                int pixelHeight = (int) computedHeight;
-                if(pixelHeight != documentComponent.getDocumentView().getDocumentHeight()){
-                    if(map == null){
-                        map = new HashMap<>();
-                    }
-                    map.put(Constants.Name.HEIGHT, computedHeight*750/ WXViewUtils.getScreenWidth());
-                }
-            }
-            if(shouldUpdateWidth(computedWidth)){
-                int pixelWidth = (int) computedWidth;
-                if(pixelWidth != documentComponent.getDocumentView().getDocumentWidth()){
-                    if(map == null){
-                        map = new HashMap<>();
-                    }
-                    map.put(Constants.Name.WIDTH, computedWidth*750/WXViewUtils.getScreenWidth());
-                }
-            }
-            if(map != null && map.size() > 0){
-                documentComponent.updateStyles(map);
-                Log.e("Weex", "Weex layout measure update styles " + JSON.toJSONString(map)
-                + "  " + documentComponent.getDocumentView().getDocumentWidth());
-            }
-        }
-    }
-
-    private boolean shouldUpdateHeight(float computedHeight){
-        if(computedHeight <= 0){
-            return false;
-        }
-        if(documentComponent.getStyles().get(Constants.Name.HEIGHT) != null){
-            float styleHeight = WXViewUtils.getRealPxByWidth(WXUtils.getFloatByViewport(documentComponent.getStyles().get(Constants.Name.HEIGHT),
-                    documentComponent.getViewPortWidth()), documentComponent.getViewPortWidth());
-            if(Math.abs(styleHeight - (int)computedHeight) <= 0.1){
-                return false;
-            }
-        }
-        return true;
-    }
-
-    private boolean shouldUpdateWidth(float computedWidth){
-        if(computedWidth <= 0){
-            return false;
-        }
-        if(documentComponent.getStyles().get(Constants.Name.WIDTH) != null){
-            float styleWidth = WXViewUtils.getRealPxByWidth(WXUtils.getFloatByViewport(documentComponent.getStyles().get(Constants.Name.WIDTH),
-                    documentComponent.getViewPortWidth()), documentComponent.getViewPortWidth());
-            if(Math.abs(styleWidth - (int)computedWidth) <= 0.1){
-                return false;
-            }
-        }
-        return true;
-    }
-
-
-    @Override
-    public void onSizeChanged(final DocumentView documentView, final int width, final int height) {
-        if(documentView.getDocumentHeight() != height || documentView.getDocumentWidth() != width){
-            return;
-        }
-        synchronized (documentComponent){
-            if(documentComponent.isDestoryed()){
-                return;
-            }
-            componentShouldInit();
-            if(documentComponent.getStyles().containsKey(Constants.Name.WIDTH) && documentComponent.getStyles().containsKey(Constants.Name.HEIGHT)){
-                return;
-            }
-            WXBridgeManager.getInstance().markDirty(documentComponent.getInstanceId(), documentComponent.getRef(), true);
-        }
-
-        WXSDKManager.getInstance().getWXBridgeManager().removeCallback(this);
-        WXSDKManager.getInstance().getWXBridgeManager().postAtFrontOfQueue(this);
-    }
-
-    @Override
-    public void run() {
-        if(documentComponent.isDestoryed()){
-            return;
-        }
-        WXBridgeManager.getInstance().markDirty(documentComponent.getInstanceId(), documentComponent.getRef(), true);
-    }
-
-    private void componentShouldInit(){
-        if(!documentComponent.isDocumentShouldInited()){
-            if(documentComponent.getLayoutSize().getWidth() > 0 && documentComponent.getLayoutSize().getHeight() > 0){
-                WXSDKManager.getInstance().getWXRenderManager().postGraphicAction(documentComponent.getInstanceId(), new InitDocumentViewAction(documentComponent));
-            }
-            documentComponent.setDocumentShouldInited(true);
-        }
-    }
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/WXListComponent.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/WXListComponent.java
index ce22b832d6..a57557fc0d 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/WXListComponent.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/WXListComponent.java
@@ -19,7 +19,6 @@
 package com.taobao.weex.ui.component.list;
 
 import android.content.Context;
-import android.os.Build;
 import android.support.v4.util.ArrayMap;
 import android.support.v7.widget.PagerSnapHelper;
 import android.text.TextUtils;
@@ -112,14 +111,6 @@ protected BounceRecyclerView generateListView(Context context, int orientation)
       snapHelper.attachToRecyclerView(bounceRecyclerView.getInnerView());
     }
 
-    bounceRecyclerView.getInnerView().setClipChildren(false);
-    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
-      bounceRecyclerView.getInnerView().setClipToOutline(false);
-    }
-    bounceRecyclerView.getInnerView().setClipToPadding(false);
-
-
-
     return bounceRecyclerView;
   }
 
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/view/listview/ExtendedLinearLayoutManager.java b/android/sdk/src/main/java/com/taobao/weex/ui/view/listview/ExtendedLinearLayoutManager.java
index 4208f5c664..bdb5f915b0 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/view/listview/ExtendedLinearLayoutManager.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/listview/ExtendedLinearLayoutManager.java
@@ -24,8 +24,6 @@
 import android.support.v7.widget.LinearSmoothScroller;
 import android.support.v7.widget.RecyclerView;
 
-import com.taobao.weex.utils.WXViewUtils;
-
 /**
  * Created by moxun on 17/2/16.
  */
@@ -37,17 +35,12 @@
 
     private OnSmoothScrollEndListener onScrollEndListener;
 
-    private int extraLayoutSpace;
-
-
     public ExtendedLinearLayoutManager(Context context) {
         super(context, VERTICAL, false);
-        extraLayoutSpace = WXViewUtils.getScreenWidth(context);
     }
 
     public ExtendedLinearLayoutManager(Context context, int orientation, boolean reverseLayout) {
         super(context, orientation, reverseLayout);
-        extraLayoutSpace = WXViewUtils.getScreenWidth(context);
     }
 
     @Override
@@ -85,11 +78,6 @@ public void smoothScrollToPosition(RecyclerView recyclerView, RecyclerView.State
         startSmoothScroll(smoothScroller);
     }
 
-    @Override
-    protected int getExtraLayoutSpace(RecyclerView.State state) {
-        return super.getExtraLayoutSpace(state) + extraLayoutSpace;
-    }
-
     private class TopSnappedSmoothScroller extends LinearSmoothScroller {
         public TopSnappedSmoothScroller(Context context) {
             super(context);
diff --git a/android/sdk/src/main/java/com/taobao/weex/utils/DumpUtils.java b/android/sdk/src/main/java/com/taobao/weex/utils/DumpUtils.java
deleted file mode 100644
index c15867fd94..0000000000
--- a/android/sdk/src/main/java/com/taobao/weex/utils/DumpUtils.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package com.taobao.weex.utils;
-
-import com.alibaba.fastjson.JSONObject;
-import com.taobao.weex.ui.component.WXComponent;
-import com.taobao.weex.ui.component.WXVContainer;
-
-import java.util.ArrayList;
-
-/**
- * Created by furture on 2018/8/31.
- */
-
-public class DumpUtils {
-
-    public static JSONObject dump(WXComponent component){
-        JSONObject jsonObject = new JSONObject();
-        jsonObject.put("ref", component.getRef());
-        jsonObject.put("type", component.getComponentType());
-        if(component.getStyles().size() > 0){
-            jsonObject.put("style", component.getStyles());
-        }
-        if(component.getAttrs().size() > 0){
-            jsonObject.put("attr", component.getAttrs());
-        }
-        if(component.getEvents().size() > 0){
-            jsonObject.put("event", component.getEvents());
-        }
-        if(component instanceof WXVContainer){
-            WXVContainer container = (WXVContainer) component;
-            ArrayList<JSONObject> list = new ArrayList<>();
-            for(int i=0; i<container.getChildCount(); i++){
-                list.add(dump(container.getChild(i)));
-            }
-            if(list.size() > 0) {
-                jsonObject.put("children", list);
-            }
-        }
-        return jsonObject;
-    }
-}
diff --git a/android/sdk/src/main/java/com/taobao/weex/utils/FontDO.java b/android/sdk/src/main/java/com/taobao/weex/utils/FontDO.java
index b7622989cd..076564e8c7 100644
--- a/android/sdk/src/main/java/com/taobao/weex/utils/FontDO.java
+++ b/android/sdk/src/main/java/com/taobao/weex/utils/FontDO.java
@@ -34,7 +34,6 @@
   private int mType = TYPE_NETWORK;
   private Typeface mTypeface;
   private int mState = STATE_INVALID;
-  private String filePath;
 
   public final static int STATE_INVALID = -1;
   public final static int STATE_INIT = 0;
@@ -169,12 +168,4 @@ public int getState() {
   public void setState(int state) {
     this.mState = state;
   }
-
-  public String getFilePath() {
-    return filePath;
-  }
-
-  public void setFilePath(String filePath) {
-    this.filePath = filePath;
-  }
 }
diff --git a/android/sdk/src/main/java/com/taobao/weex/utils/TypefaceUtil.java b/android/sdk/src/main/java/com/taobao/weex/utils/TypefaceUtil.java
index a574ba5b6d..2d113bc70a 100644
--- a/android/sdk/src/main/java/com/taobao/weex/utils/TypefaceUtil.java
+++ b/android/sdk/src/main/java/com/taobao/weex/utils/TypefaceUtil.java
@@ -225,7 +225,7 @@ public void onHttpFinish(WXResponse response) {
     });
   }
 
-  private static boolean loadLocalFontFile(final String path, final String fontFamily, boolean hasNetworkDowload) {
+  private static boolean loadLocalFontFile(String path, final String fontFamily, boolean hasNetworkDowload) {
     if (TextUtils.isEmpty(path) || TextUtils.isEmpty(fontFamily)) {
       return false;
     }
@@ -238,7 +238,6 @@ private static boolean loadLocalFontFile(final String path, final String fontFam
       if (typeface != null) {
         FontDO fontDo = sCacheMap.get(fontFamily);
         if (fontDo != null) {
-          fontDo.setFilePath(path);
           fontDo.setState(FontDO.STATE_SUCCESS);
           fontDo.setTypeface(typeface);
           if(WXEnvironment.isApkDebugable()) {
@@ -256,14 +255,12 @@ private static boolean loadLocalFontFile(final String path, final String fontFam
               public void run() {
                 Intent intent = new Intent(ACTION_TYPE_FACE_AVAILABLE);
                 intent.putExtra("fontFamily", fontFamily);
-                intent.putExtra("filePath", path);
                 LocalBroadcastManager.getInstance(WXEnvironment.getApplication()).sendBroadcast(intent);
               }
             }, 100);
           }else{
             Intent intent = new Intent(ACTION_TYPE_FACE_AVAILABLE);
             intent.putExtra("fontFamily", fontFamily);
-            intent.putExtra("filePath", path);
             LocalBroadcastManager.getInstance(WXEnvironment.getApplication()).sendBroadcast(intent);
           }
           return true;
diff --git a/weex_core/Source/CMakeLists.txt b/weex_core/Source/CMakeLists.txt
index f1a1316a9e..8b9df20db5 100644
--- a/weex_core/Source/CMakeLists.txt
+++ b/weex_core/Source/CMakeLists.txt
@@ -39,7 +39,6 @@ set(COMMON_SRCS
   ./core/render/node/render_mask.cpp
   ./core/render/node/render_scroller.cpp
   ./core/render/node/render_text.cpp
-  ./core/render/node/render_document.cpp
 
   ./core/render/action/render_action_add_event.cpp
   ./core/render/action/render_action_remove_event.cpp
diff --git a/weex_core/Source/android/jniprebuild/jniheader/WXBridge_jni.h b/weex_core/Source/android/jniprebuild/jniheader/WXBridge_jni.h
index eae346e692..e973cc713d 100644
--- a/weex_core/Source/android/jniprebuild/jniheader/WXBridge_jni.h
+++ b/weex_core/Source/android/jniprebuild/jniheader/WXBridge_jni.h
@@ -150,8 +150,6 @@ static void RegisterCoreEnv(JNIEnv* env, jobject jcaller,
 static void ResetWXBridge(JNIEnv* env, jobject jcaller,
     jobject bridge,
     jstring className);
-static void SetSegmentSwitch(JNIEnv* env, jobject jcaller,
-    jboolean segmentSwitch);
 
 static void UpdateGlobalConfig(JNIEnv* env, jobject jcaller,
     jstring config);
@@ -1076,11 +1074,6 @@ static const JNINativeMethod kMethodsWXBridge[] = {
 "Ljava/lang/String;"
 ")"
 "V", reinterpret_cast<void*>(ResetWXBridge) },
-    { "nativeSetSegmentSwitch",
-"("
-"Z"
-")"
-"V", reinterpret_cast<void*>(SetSegmentSwitch) },
     { "nativeUpdateGlobalConfig",
 "("
 "Ljava/lang/String;"
diff --git a/weex_core/Source/android/wrap/wx_bridge.cpp b/weex_core/Source/android/wrap/wx_bridge.cpp
index 954bea867c..9108b1b320 100644
--- a/weex_core/Source/android/wrap/wx_bridge.cpp
+++ b/weex_core/Source/android/wrap/wx_bridge.cpp
@@ -35,7 +35,6 @@
 #include "android/wrap/hash_set.h"
 #include "android/wrap/wx_js_object.h"
 #include "android/wrap/wx_map.h"
-#include "core/render/node/factory/render_creator.h"
 #include "base/LogDefines.h"
 #include "core/config/core_environment.h"
 #include "core/layout/layout.h"
@@ -237,11 +236,6 @@ static void ResetWXBridge(JNIEnv* env, jobject jcaller,
   WXBridge::Instance()->reset_clazz(env, classNameRef.getChars());
 }
 
-static void SetSegmentSwitch(JNIEnv* env, jobject jcaller,  jboolean segmentSwitch){
-    RenderCreator::GetInstance()->setSegmentSwitch(segmentSwitch);
-}
-
-
 static void SetViewPortWidth(JNIEnv* env, jobject jcaller, jstring instanceId,
                              jfloat value) {
   WeexCoreManager::Instance()
@@ -1061,4 +1055,4 @@ void WXBridge::reset_clazz(JNIEnv* env, const char* className) {
   Java_WXBridge_reset_clazz(env, className);
 }
 
-}  // namespace WeexCore
+}  // namespace WeexCore
\ No newline at end of file
diff --git a/weex_core/Source/core/bridge/platform/core_side_in_platform.cpp b/weex_core/Source/core/bridge/platform/core_side_in_platform.cpp
index df57703f4e..3ada98ae48 100644
--- a/weex_core/Source/core/bridge/platform/core_side_in_platform.cpp
+++ b/weex_core/Source/core/bridge/platform/core_side_in_platform.cpp
@@ -159,7 +159,6 @@ void CoreSideInPlatform::MarkDirty(const std::string &instance_id,
   RenderObject *render = page->GetRenderObject(render_ref);
   if (render == nullptr) return;
   render->markDirty();
-  page->set_is_dirty(true);
 }
 
 void CoreSideInPlatform::SetViewPortWidth(const std::string &instance_id,
diff --git a/weex_core/Source/core/layout/layout.h b/weex_core/Source/core/layout/layout.h
index c55f650c18..5f7460e913 100644
--- a/weex_core/Source/core/layout/layout.h
+++ b/weex_core/Source/core/layout/layout.h
@@ -707,11 +707,6 @@ namespace WeexCore {
       markDirty();
     }
 
-    inline void clearChilds(){
-      mChildList.clear();
-      markDirty();
-    }
-
     inline void addChildAt(WXCoreLayoutNode* const child, Index index) {
       mChildList.insert(mChildList.begin() + index, child);
       child->mParent = this;
diff --git a/weex_core/Source/core/parser/dom_wson.cpp b/weex_core/Source/core/parser/dom_wson.cpp
index fd9eb66def..f2ecb9ba70 100644
--- a/weex_core/Source/core/parser/dom_wson.cpp
+++ b/weex_core/Source/core/parser/dom_wson.cpp
@@ -23,7 +23,6 @@
 #include <core/render/node/render_object.h>
 #include <core/render/page/render_page.h>
 #include <core/render/node/factory/render_creator.h>
-#include <core/render/node/factory/render_type.h>
 #include "dom_wson.h"
 #include "wson/wson.h"
 #include "wson/wson_parser.h"
@@ -68,7 +67,7 @@ namespace WeexCore {
             }else if (0 == strcmp(objectKey.c_str(), "type")) {
                 renderType = parser.nextStringUTF8(parser.nextType());
                 render = (RenderObject *) RenderCreator::GetInstance()->CreateRender(renderType, ref);
-                render->set_page_id(pageId);
+              render->set_page_id(pageId);
                 if (parent != nullptr){
                     parent->AddRenderObject(index, render);
                 }
@@ -81,10 +80,6 @@ namespace WeexCore {
                         std::string attrValueString = parser.nextStringUTF8(parser.nextType());
                         render->AddAttr(attrKeyString, attrValueString);
                     }
-                    /**
-                    if (parent != nullptr && parent->type() == kRenderCell){
-                        render->AddAttr("doctype", "weexrender");
-                    }*/
                 }else{
                     keyOrderRight = keys_order_as_expect(render, keyOrderRight);
                     parser.skipValue(attrType);
@@ -192,38 +187,6 @@ namespace WeexCore {
             }
         }
 
-        if(render->type() == kRenderDiv
-           && render->attributes()->find("doctype") != render->attributes()->end()
-           && RenderCreator::GetInstance()->isSegmentSwitchOpen()){
-            RenderObject* segment = (RenderObject *) RenderCreator::GetInstance()->CreateRender(kRenderDocument, ref);
-            segment->set_page_id(pageId);
-            if (parent != nullptr){
-                parent->removeChild(render);
-                parent->AddRenderObject(index, segment);
-            }
-            for(int i=0; i<render->getChildCount(); i++){
-                RenderObject* child = (RenderObject *) render->getChildAt(i);
-                segment->AddRenderObject(i, child);
-            }
-            std::map<std::string, std::string>::iterator attrIt = render->attributes()->begin();
-            for(; attrIt != render->attributes()->end(); attrIt++){
-                segment->AddAttr(attrIt->first, attrIt->second);
-            }
-            std::map<std::string, std::string>::iterator styleIt = render->styles()->begin();
-            for(; styleIt != render->styles()->end(); styleIt++){
-                segment->AddStyle(styleIt->first, styleIt->second);
-            }
-            std::set<std::string>::iterator eventIt =  render->events()->begin();
-            for(;eventIt != render->events()->end(); eventIt++){
-                segment->AddEvent(*eventIt);
-            }
-
-
-            render->clearChilds();
-            delete  render;
-            render = segment;
-        }
-
 
         if (render != nullptr) {
             render->ApplyDefaultStyle();
diff --git a/weex_core/Source/core/render/manager/render_manager.cpp b/weex_core/Source/core/render/manager/render_manager.cpp
index de01a52114..c603ae7ec8 100644
--- a/weex_core/Source/core/render/manager/render_manager.cpp
+++ b/weex_core/Source/core/render/manager/render_manager.cpp
@@ -119,6 +119,13 @@ bool RenderManager::AddRenderObject(const std::string &page_id,
   RenderPage *page = GetPage(page_id);
   if (page == nullptr) return false;
 
+#if RENDER_LOG
+  wson_parser parser(data);
+  LOGD(
+      "[RenderManager] AddRenderObject >>>> pageId: %s, parentRef: %s, index: "
+      "%d, dom data: %s",
+      pageId.c_str(), parentRef.c_str(), index, parser.toStringUTF8().c_str());
+#endif
 
   int64_t start_time = getCurrentTime();
   RenderObject *child = Wson2RenderObject(data, page_id);
diff --git a/weex_core/Source/core/render/node/factory/render_creator.cpp b/weex_core/Source/core/render/node/factory/render_creator.cpp
index 6bb4178d85..8632110cd3 100644
--- a/weex_core/Source/core/render/node/factory/render_creator.cpp
+++ b/weex_core/Source/core/render/node/factory/render_creator.cpp
@@ -26,7 +26,6 @@
 #include "core/render/node/factory/render_text_factory.h"
 #include "core/render/node/factory/render_type.h"
 #include "core/render/node/factory/simple_render_factory.h"
-#include "core/render/node/factory/render_document_factory.h"
 
 namespace WeexCore {
 
@@ -46,8 +45,6 @@ IRenderObject *RenderCreator::CreateRender(const std::string &type,
     factory = new RenderScrollerFactory();
   } else if (type == kRenderAppBar) {
     factory = new RenderAppBarFactory();
-  } else if (type == kRenderDocument) {
-    factory = new RenderDocumentFactory();
   } else {
     factory = new RenderCommonFactory();
   }
diff --git a/weex_core/Source/core/render/node/factory/render_creator.h b/weex_core/Source/core/render/node/factory/render_creator.h
index 730274eb12..f5dddfccee 100644
--- a/weex_core/Source/core/render/node/factory/render_creator.h
+++ b/weex_core/Source/core/render/node/factory/render_creator.h
@@ -26,19 +26,8 @@ namespace WeexCore {
 class IRenderObject;
 
 class RenderCreator {
-
-  public:
-   void setSegmentSwitch(bool segmentSwitch){
-     _segmentSwitch = segmentSwitch;
-   }
-
-    bool isSegmentSwitchOpen(){
-      return _segmentSwitch;
-    }
  private:
-  RenderCreator() {
-      _segmentSwitch = false;
-  }
+  RenderCreator() {}
 
   ~RenderCreator() {}
 
@@ -65,7 +54,6 @@ class RenderCreator {
   IRenderObject *CreateRender(const std::string &type, const std::string &ref);
 
  private:
-  bool _segmentSwitch;
   static RenderCreator *g_pInstance;
 };
 }  // namespace WeexCore
diff --git a/weex_core/Source/core/render/node/factory/render_document_factory.h b/weex_core/Source/core/render/node/factory/render_document_factory.h
deleted file mode 100644
index 8a04f23776..0000000000
--- a/weex_core/Source/core/render/node/factory/render_document_factory.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-#ifndef CORE_RENDER_NODE_FACTORY_RENDER_DOCUMENT_FACTORY_H_
-#define CORE_RENDER_NODE_FACTORY_RENDER_DOCUMENT_FACTORY_H_
-
-#include "core/render/node/factory/render_factory_interface.h"
-#include "core/render/node/render_document.h"
-
-namespace WeexCore {
-
-class RenderDocumentFactory : public IRenderFactory {
- public:
-  IRenderObject *CreateRender() { return new RenderDocument(); }
-};
-
-}  // namespace WeexCore
-
-#endif  // CORE_RENDER_NODE_FACTORY_RENDER_LIST_FACTORY_H_
diff --git a/weex_core/Source/core/render/node/factory/render_type.h b/weex_core/Source/core/render/node/factory/render_type.h
index a0d9fb6437..c7242b8ae9 100644
--- a/weex_core/Source/core/render/node/factory/render_type.h
+++ b/weex_core/Source/core/render/node/factory/render_type.h
@@ -34,8 +34,6 @@ constexpr char kRenderHeader[] = "header";
 constexpr char kRenderFooter[] = "footer";
 constexpr char kRenderWaterfall[] = "waterfall";
 constexpr char kRenderAppBar[] = "appbar";
-constexpr char kRenderDocument[] = "segment";
-constexpr char kRenderDiv[] = "div";
 }  // namespace WeexCore
 
 #endif  // CORE_RENDER_NODE_FACTORY_RENDER_TYPE_H_
diff --git a/weex_core/Source/core/render/node/render_document.cpp b/weex_core/Source/core/render/node/render_document.cpp
deleted file mode 100644
index 29f85ad361..0000000000
--- a/weex_core/Source/core/render/node/render_document.cpp
+++ /dev/null
@@ -1,129 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-//
-// Created by furture on 2018/8/7.
-//
-
-#include <core/css/constants_name.h>
-#include "render_document.h"
-namespace WeexCore {
-
-    /**
-     * should set on flag on page, when have the flag fillter the page
-     * */
-    bool isRenderDocumentChild(RenderObject *node){
-        while(node != nullptr){
-            if(node->isSegmentChild()){
-                return true;
-            }
-            if(node->type() == kRenderDocument){
-                return true;
-            }
-            if(node->type() == kRenderCell || node->type() == kRenderList){
-                return false;
-            }
-            if(node->is_root_render()){
-                return false;
-            }
-            node = (RenderObject *) node->getParent();
-        }
-        return false;
-    }
-
-    RenderDocument::~RenderDocument() {
-        if (this->documentChilds.size() > 0) {
-            for (auto it = this->documentChilds.begin();
-                 it != this->documentChilds.end(); ++it) {
-                RenderObject *child = *it;
-                if (child) {
-                    delete child;
-                    child = nullptr;
-                }
-            }
-            this->documentChilds.clear();
-        }
-    }
-
-    int RenderDocument::AddRenderObject(int index, RenderObject *child){
-        if (child == nullptr || index < -1) {
-            return index;
-        }
-
-        Index count = documentChilds.size();
-        index = index >= count ? -1 : index;
-        if (index < 0) {
-            index = static_cast<int>(count);
-        }
-        documentChilds.insert(documentChilds.begin() + count, child);
-        child->setParent(this, child);
-        child->set_parent_render(this);
-        markDirty();
-        return index;
-    }
-
-    StyleType RenderDocument::ApplyStyle(const std::string &key, const std::string &value,
-                                         const bool updating) {
-        if (key == BORDER_WIDTH) {
-            MapInsertOrAssign(styles(), key, value);
-            return kTypeBorder;
-        } else if (key == BORDER_TOP_WIDTH) {
-            MapInsertOrAssign(styles(), key, value);
-            return kTypeBorder;
-        } else if (key == BORDER_RIGHT_WIDTH) {
-            MapInsertOrAssign(styles(), key, value);
-            return kTypeBorder;
-        } else if (key == BORDER_BOTTOM_WIDTH) {
-            MapInsertOrAssign(styles(), key, value);
-            return kTypeBorder;
-        } else if (key == BORDER_LEFT_WIDTH) {
-            MapInsertOrAssign(styles(), key, value);
-            return kTypeBorder;
-        } else if (key == PADDING) {
-            MapInsertOrAssign(styles(), key, value);
-            return kTypePadding;
-        } else if (key == PADDING_LEFT) {
-            MapInsertOrAssign(styles(), key, value);
-            return kTypePadding;
-        } else if (key == PADDING_TOP) {
-            MapInsertOrAssign(styles(), key, value);
-            return kTypePadding;
-        } else if (key == PADDING_RIGHT) {
-            MapInsertOrAssign(styles(), key, value);
-            return kTypePadding;
-        } else if (key == PADDING_BOTTOM) {
-            MapInsertOrAssign(styles(), key, value);
-            return kTypePadding;
-        }
-        return RenderObject::ApplyStyle(key, value, updating);
-    }
-
-    RenderObject* RenderDocument::GetChild(const Index &index) {
-        return documentChilds[index];
-    }
-
-    void RenderDocument::RemoveRenderObject(RenderObject *child) {
-        for (int index = 0; index < documentChilds.size(); index++) {
-            if (child == documentChilds[index]) {
-                documentChilds.erase(documentChilds.begin() + index);
-                break;
-            }
-        }
-        markDirty();
-    }
-}
diff --git a/weex_core/Source/core/render/node/render_document.h b/weex_core/Source/core/render/node/render_document.h
deleted file mode 100644
index eb377b594b..0000000000
--- a/weex_core/Source/core/render/node/render_document.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-//
-// Created by furture on 2018/8/7.
-//
-
-#ifndef WEEX_PROJECT_RENDER_BLOCK_H
-#define WEEX_PROJECT_RENDER_BLOCK_H
-
-#include <map>
-#include <string>
-#include <vector>
-
-#include "core/css/constants_value.h"
-#include "core/render/node/render_object.h"
-#include "core/render/node/factory/render_type.h"
-
-/**
- * render document node for  all the tag in the block will not in layout tree
- * */
-namespace WeexCore {
-
-    bool isRenderDocumentChild(RenderObject *node);
-
-    class RenderDocument : public RenderObject  {
-
-    public:
-        ~RenderDocument();
-        int AddRenderObject(int index, RenderObject *child);
-        RenderObject *GetChild(const Index &index);
-        void RemoveRenderObject(RenderObject *child);
-
-        StyleType ApplyStyle(const std::string &key, const std::string &value,
-                             const bool updating);
-
-        std::vector<RenderObject *> &GetDocumentChilds(){
-            return documentChilds;
-        }
-
-    private:
-        std::vector<RenderObject *> documentChilds;
-    };
-}
-
-
-#endif //WEEX_PROJECT_RENDER_BLOCK_H
diff --git a/weex_core/Source/core/render/node/render_object.cpp b/weex_core/Source/core/render/node/render_object.cpp
index cd57004eb8..cb69d63d83 100644
--- a/weex_core/Source/core/render/node/render_object.cpp
+++ b/weex_core/Source/core/render/node/render_object.cpp
@@ -136,7 +136,8 @@ StyleType RenderObject::ApplyStyle(const std::string &key,
                                    const std::string &value,
                                    const bool updating) {
   bool insert = false;
-  if (value.length() > 0) {
+  if (value.length() > 0 && (value.at(0) == JSON_OBJECT_MARK_CHAR ||
+                             value.at(0) == JSON_ARRAY_MARK_CHAR)) {
     MapInsertOrAssign(this->styles_, key, value);
     insert = true;
   }
diff --git a/weex_core/Source/core/render/node/render_object.h b/weex_core/Source/core/render/node/render_object.h
index b20092ab11..5242a641ca 100644
--- a/weex_core/Source/core/render/node/render_object.h
+++ b/weex_core/Source/core/render/node/render_object.h
@@ -149,10 +149,6 @@ class RenderObject : public IRenderObject {
 
   inline bool is_sticky() { return this->is_sticky_; }
 
-  inline bool isSegmentChild() { return this->is_segment_child; }
-
-  inline void setIsSegmentChild(bool isSegmentChildRender) { this->is_segment_child = isSegmentChildRender;}
-
  private:
   RenderObject *parent_render_;
   std::map<std::string, std::string> *styles_;
@@ -160,7 +156,6 @@ class RenderObject : public IRenderObject {
   std::set<std::string> *events_;
   bool is_root_render_;
   bool is_sticky_ = false;
-  bool is_segment_child = false;
 };
 }  // namespace WeexCore
 #endif  // CORE_RENDER_NODE_RENDER_OBJECT_H_
diff --git a/weex_core/Source/core/render/page/render_page.cpp b/weex_core/Source/core/render/page/render_page.cpp
index 89195ed72c..032a0d7aa0 100644
--- a/weex_core/Source/core/render/page/render_page.cpp
+++ b/weex_core/Source/core/render/page/render_page.cpp
@@ -18,7 +18,6 @@
  */
 
 #include "core/render/page/render_page.h"
-#include "core/render/node/render_document.h"
 #include "base/TimeUtils.h"
 #include "base/ViewUtils.h"
 #include "base/LogDefines.h"
@@ -43,7 +42,6 @@
 #include "core/render/manager/render_manager.h"
 #include "core/render/node/factory/render_type.h"
 #include "core/render/node/render_list.h"
-#include "core/render/node/render_document.h"
 #include "core/render/node/render_object.h"
 
 namespace WeexCore {
@@ -233,7 +231,7 @@ bool RenderPage::UpdateStyle(
   // Bridge_Impl_Android::getInstance()->callHasTransitionPros(mPageId.c_str(),
   // ref.c_str(), src);
 
-  if (result == 1 || WeexCore::isRenderDocumentChild(render)) {
+  if (result == 1) {
     SendUpdateStyleAction(render, src, margin, padding, border);
   } else {
     for (auto iter = src->begin(); iter != src->end(); iter++) {
@@ -487,17 +485,11 @@ void RenderPage::SendCreateBodyAction(RenderObject *render) {
 void RenderPage::SendAddElementAction(RenderObject *child, RenderObject *parent,
                                       int index, bool is_recursion,
                                       bool will_layout) {
-
   if (child == nullptr || parent == nullptr) return;
   if (parent != nullptr && parent->type() == WeexCore::kRenderRecycleList) {
     will_layout = false;
   }
 
-  if(WeexCore::isRenderDocumentChild(parent)){
-      will_layout = false;
-      child->setIsSegmentChild(true);
-  }
-
   RenderAction *action =
       new RenderActionAddElement(page_id(), child, parent, index, will_layout);
   PostRenderAction(action);
@@ -524,19 +516,6 @@ void RenderPage::SendAddElementAction(RenderObject *child, RenderObject *parent,
     }
   }
 
-  if (child->type() == WeexCore::kRenderDocument) {
-    RenderDocument *render_document = static_cast<RenderDocument*>(child);
-    std::vector<RenderObject *> &documentChilds = render_document->GetDocumentChilds();
-    for (auto it = documentChilds.begin(); it != documentChilds.end(); it++) {
-      RenderObject *grandson = static_cast<RenderObject *>(*it);
-      if (grandson != nullptr) {
-        SendAddElementAction(grandson, child, -1, true, will_layout);
-      }
-      ++i;
-    }
-  }
-
-
   if (!is_recursion && i > 0 && child->IsAppendTree()) {
     SendAppendTreeCreateFinish(child->ref());
   }


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services