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
----------------------------------------------------------------------