You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by gu...@apache.org on 2017/10/26 15:10:00 UTC

[1/3] incubator-weex git commit: image recycle enable auto release image reduce memory usage

Repository: incubator-weex
Updated Branches:
  refs/heads/release-0.16 3433218e8 -> 5c3fffcf6


image recycle enable  auto release image reduce memory usage


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/067bf140
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/067bf140
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/067bf140

Branch: refs/heads/release-0.16
Commit: 067bf140570b34b6e3f303ca3f5efb1f5e028f4c
Parents: 4d8a51f
Author: jianbai.gbj <ji...@alibaba-inc.com>
Authored: Mon Oct 23 15:15:43 2017 +0800
Committer: jianbai.gbj <ji...@alibaba-inc.com>
Committed: Thu Oct 26 21:01:22 2017 +0800

----------------------------------------------------------------------
 .../java/com/taobao/weex/common/Constants.java  |  1 +
 .../com/taobao/weex/ui/component/WXImage.java   | 30 ++++++
 .../com/taobao/weex/ui/view/WXImageView.java    | 98 ++++++++++++++++++++
 3 files changed, 129 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/067bf140/android/sdk/src/main/java/com/taobao/weex/common/Constants.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/common/Constants.java b/android/sdk/src/main/java/com/taobao/weex/common/Constants.java
index 730ce84..bdb7f03 100644
--- a/android/sdk/src/main/java/com/taobao/weex/common/Constants.java
+++ b/android/sdk/src/main/java/com/taobao/weex/common/Constants.java
@@ -109,6 +109,7 @@ public class Constants {
     String SRC = "src";
     String PLACE_HOLDER = "placeHolder";
     String RESIZE_MODE = "resizeMode";
+    String AUTO_RECYCLE = "autoRecycle";
     String SHOW_INDICATORS = "showIndicators";
     String AUTO_PLAY = "autoPlay";
     String SCROLL_DIRECTION = "scrollDirection";

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/067bf140/android/sdk/src/main/java/com/taobao/weex/ui/component/WXImage.java
----------------------------------------------------------------------
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 1c4d062..f46cbce 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
@@ -77,6 +77,7 @@ public class WXImage extends WXComponent<ImageView> {
 
   private String mSrc;
   private int mBlurRadius;
+  private boolean mAutoRecycle = true;
 
   private static SingleFunctionParser.FlatMapper<Integer> BLUR_RADIUS_MAPPER = new SingleFunctionParser.FlatMapper<Integer>() {
     @Override
@@ -133,6 +134,9 @@ public class WXImage extends WXComponent<ImageView> {
           return true;
         case Constants.Name.IMAGE_QUALITY:
           return true;
+        case Constants.Name.AUTO_RECYCLE:
+          mAutoRecycle = WXUtils.getBoolean(param, mAutoRecycle);
+          return true;
         case Constants.Name.FILTER:
           int blurRadius = 0;
           if(param != null && param instanceof String) {
@@ -272,6 +276,22 @@ public class WXImage extends WXComponent<ImageView> {
     }
   }
 
+  public void autoReleaseImage(){
+    if(mAutoRecycle){
+      if(getHostView() != null){
+        if (getInstance().getImgLoaderAdapter() != null) {
+          getInstance().getImgLoaderAdapter().setImage(null, mHost, null, null);
+        }
+      }
+    }
+  }
+
+  public void autoRecoverImage() {
+    if(mAutoRecycle) {
+      setSrc(mSrc);
+    }
+  }
+
   private void setRemoteSrc(Uri rewrited,int blurRadius) {
 
       WXImageStrategy imageStrategy = new WXImageStrategy();
@@ -417,6 +437,16 @@ public class WXImage extends WXComponent<ImageView> {
     });
   }
 
+
+  public void destroy() {
+    if(getHostView() instanceof WXImageView){
+      if (getInstance().getImgLoaderAdapter() != null) {
+          getInstance().getImgLoaderAdapter().setImage(null, mHost, null, null);
+      }
+    }
+    super.destroy();
+  }
+
   public interface Measurable {
     int getNaturalWidth();
     int getNaturalHeight();

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/067bf140/android/sdk/src/main/java/com/taobao/weex/ui/view/WXImageView.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXImageView.java b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXImageView.java
index dd7b2bc..6348bbb 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXImageView.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXImageView.java
@@ -22,9 +22,11 @@ import android.content.Context;
 import android.graphics.Bitmap;
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
+import android.support.annotation.Keep;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.view.MotionEvent;
+import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ImageView;
 
@@ -45,6 +47,9 @@ public class WXImageView extends ImageView implements WXGestureObservable,
   private WXGesture wxGesture;
   private float[] borderRadius;
   private boolean gif;
+  private boolean isBitmapReleased = false;
+  private boolean enableBitmapAutoManage = true;
+
 
   public WXImageView(Context context) {
     super(context);
@@ -167,4 +172,97 @@ public class WXImageView extends ImageView implements WXGestureObservable,
     }
     return -1;
   }
+
+  private boolean mOutWindowVisibilityChangedReally;
+  @Override
+  public void dispatchWindowVisibilityChanged(int visibility) {
+    mOutWindowVisibilityChangedReally = true;
+    super.dispatchWindowVisibilityChanged(visibility);
+    mOutWindowVisibilityChangedReally = false;
+  }
+
+  @Override
+  protected void onWindowVisibilityChanged(int visibility) {
+    super.onWindowVisibilityChanged(visibility);
+    if(mOutWindowVisibilityChangedReally){
+      if(visibility == View.VISIBLE){
+         autoRecoverImage();
+      }else{
+         autoReleaseImage();
+      }
+    }
+  }
+
+  @Override
+  protected void onVisibilityChanged(@NonNull View changedView, int visibility) {
+    super.onVisibilityChanged(changedView, visibility);
+    if(changedView == this){
+        if(visibility == View.VISIBLE){
+          autoRecoverImage();
+        }else{
+          autoReleaseImage();
+        }
+    }
+  }
+
+  @Override
+  protected void onAttachedToWindow() {
+    super.onAttachedToWindow();
+    autoRecoverImage();
+  }
+
+  @Override
+  protected void onDetachedFromWindow() {
+    super.onDetachedFromWindow();
+    autoReleaseImage();
+
+  }
+
+
+  @Override
+  public void onStartTemporaryDetach () {
+    super.onStartTemporaryDetach();
+    autoReleaseImage();
+
+  }
+
+
+  @Override
+  public void onFinishTemporaryDetach () {
+    super.onFinishTemporaryDetach();
+    autoRecoverImage();
+  }
+
+
+  protected void setEnableBitmapAutoManage(boolean enableBitmapAutoManage) {
+     this.enableBitmapAutoManage = enableBitmapAutoManage;
+  }
+
+  protected void autoReleaseImage(){
+      if(enableBitmapAutoManage) {
+        if (!isBitmapReleased) {
+          isBitmapReleased = true;
+          WXImage image = getComponent();
+          if (image != null) {
+            image.autoReleaseImage();
+          }
+        }
+      }
+  }
+
+  protected void autoRecoverImage(){
+    if(enableBitmapAutoManage){
+      if(isBitmapReleased){
+        WXImage image = getComponent();
+        if(image != null){
+          image.autoRecoverImage();
+        }
+        isBitmapReleased = false;
+      }
+    }
+  }
+
+
+
+
 }


[2/3] incubator-weex git commit: close auto bitmap recycle

Posted by gu...@apache.org.
close auto  bitmap recycle


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/9c40f9db
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/9c40f9db
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/9c40f9db

Branch: refs/heads/release-0.16
Commit: 9c40f9db0dcb2e51ac95e22e556c3b3bbe7dd5ec
Parents: 067bf14
Author: jianbai.gbj <ji...@alibaba-inc.com>
Authored: Thu Oct 26 21:59:17 2017 +0800
Committer: jianbai.gbj <ji...@alibaba-inc.com>
Committed: Thu Oct 26 21:59:17 2017 +0800

----------------------------------------------------------------------
 android/sdk/src/main/java/com/taobao/weex/common/Constants.java    | 2 +-
 android/sdk/src/main/java/com/taobao/weex/ui/view/WXImageView.java | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/9c40f9db/android/sdk/src/main/java/com/taobao/weex/common/Constants.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/common/Constants.java b/android/sdk/src/main/java/com/taobao/weex/common/Constants.java
index bdb7f03..9ba9c16 100644
--- a/android/sdk/src/main/java/com/taobao/weex/common/Constants.java
+++ b/android/sdk/src/main/java/com/taobao/weex/common/Constants.java
@@ -109,7 +109,7 @@ public class Constants {
     String SRC = "src";
     String PLACE_HOLDER = "placeHolder";
     String RESIZE_MODE = "resizeMode";
-    String AUTO_RECYCLE = "autoRecycle";
+    String AUTO_RECYCLE = "autoBitmapRecycle";
     String SHOW_INDICATORS = "showIndicators";
     String AUTO_PLAY = "autoPlay";
     String SCROLL_DIRECTION = "scrollDirection";

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/9c40f9db/android/sdk/src/main/java/com/taobao/weex/ui/view/WXImageView.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXImageView.java b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXImageView.java
index 6348bbb..00cb74a 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXImageView.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXImageView.java
@@ -48,7 +48,7 @@ public class WXImageView extends ImageView implements WXGestureObservable,
   private float[] borderRadius;
   private boolean gif;
   private boolean isBitmapReleased = false;
-  private boolean enableBitmapAutoManage = true;
+  private boolean enableBitmapAutoManage = false;
 
 
   public WXImageView(Context context) {


[3/3] incubator-weex git commit: * [android] Auto Recycle ImageView's Bitmap

Posted by gu...@apache.org.
* [android] Auto Recycle ImageView's Bitmap


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/5c3fffcf
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/5c3fffcf
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/5c3fffcf

Branch: refs/heads/release-0.16
Commit: 5c3fffcf65ac7ea59ddeb4320e103ef1e35c480a
Parents: 3433218 9c40f9d
Author: gurisxie <27...@qq.com>
Authored: Thu Oct 26 23:09:11 2017 +0800
Committer: gurisxie <27...@qq.com>
Committed: Thu Oct 26 23:09:51 2017 +0800

----------------------------------------------------------------------
 .../java/com/taobao/weex/common/Constants.java  |  1 +
 .../com/taobao/weex/ui/component/WXImage.java   | 30 ++++++
 .../com/taobao/weex/ui/view/WXImageView.java    | 98 ++++++++++++++++++++
 3 files changed, 129 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5c3fffcf/android/sdk/src/main/java/com/taobao/weex/common/Constants.java
----------------------------------------------------------------------