Repository: incubator-weex Updated Branches: refs/heads/master 95e16d870 -> a553c194a
[WEEX-216][android] WXAnimation Fix Memory Leak and performance improve Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/4dded272 Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/4dded272 Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/4dded272 Branch: refs/heads/master Commit: 4dded272b79f9b8bb8e32ae88899fcee878fc24c Parents: de40fe1 Author: jianbai.gbj <[email protected]> Authored: Sun Feb 11 16:45:44 2018 +0800 Committer: jianbai.gbj <[email protected]> Committed: Sun Feb 11 17:00:29 2018 +0800 ---------------------------------------------------------------------- android/sdk/src/main/java/com/taobao/weex/WXSDKEngine.java | 2 +- .../src/main/java/com/taobao/weex/dom/action/Actions.java | 2 +- .../java/com/taobao/weex/dom/action/AnimationAction.java | 8 ++++---- .../java/com/taobao/weex/ui/animation/WXAnimationModule.java | 6 ++++-- .../main/java/com/taobao/weex/utils/WXReflectionUtils.java | 8 ++++++++ .../com/taobao/weex/ui/animation/WXAnimationModuleTest.java | 5 +++-- 6 files changed, 21 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/4dded272/android/sdk/src/main/java/com/taobao/weex/WXSDKEngine.java ---------------------------------------------------------------------- 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 7069729..f593986 100644 --- a/android/sdk/src/main/java/com/taobao/weex/WXSDKEngine.java +++ b/android/sdk/src/main/java/com/taobao/weex/WXSDKEngine.java @@ -312,7 +312,7 @@ public class WXSDKEngine { registerModule("modal", WXModalUIModule.class, false); registerModule("instanceWrap", WXInstanceWrap.class, true); - registerModule("animation", WXAnimationModule.class, true); + registerModule("animation", WXAnimationModule.class, false); registerModule("webview", WXWebViewModule.class, true); registerModule("navigator", WXNavigatorModule.class); registerModule("stream", WXStreamModule.class); http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/4dded272/android/sdk/src/main/java/com/taobao/weex/dom/action/Actions.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/action/Actions.java b/android/sdk/src/main/java/com/taobao/weex/dom/action/Actions.java index 9f60765..3f464bc 100644 --- a/android/sdk/src/main/java/com/taobao/weex/dom/action/Actions.java +++ b/android/sdk/src/main/java/com/taobao/weex/dom/action/Actions.java @@ -206,7 +206,7 @@ public class Actions { } - public static DOMAction getAnimationAction(@NonNull final String ref, @NonNull String animation, + public static DOMAction getAnimationAction(@NonNull final String ref, @NonNull JSONObject animation, @Nullable final String callBack){ return new AnimationAction(ref, animation, callBack); } http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/4dded272/android/sdk/src/main/java/com/taobao/weex/dom/action/AnimationAction.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/action/AnimationAction.java b/android/sdk/src/main/java/com/taobao/weex/dom/action/AnimationAction.java index f08b135..fa2246f 100644 --- a/android/sdk/src/main/java/com/taobao/weex/dom/action/AnimationAction.java +++ b/android/sdk/src/main/java/com/taobao/weex/dom/action/AnimationAction.java @@ -79,7 +79,7 @@ class AnimationAction implements DOMAction, RenderAction { @Nullable private - final String animation; + final JSONObject animation; @Nullable private @@ -89,7 +89,7 @@ class AnimationAction implements DOMAction, RenderAction { private WXAnimationBean mAnimationBean; - AnimationAction(@NonNull final String ref, @Nullable String animation, + AnimationAction(@NonNull final String ref, @Nullable JSONObject animation, @Nullable final String callBack) { this.ref = ref; this.animation = animation; @@ -113,9 +113,9 @@ class AnimationAction implements DOMAction, RenderAction { try { WXDomObject domObject; if (!context.isDestory() && - !TextUtils.isEmpty(animation) && + animation != null && (domObject = context.getDomByRef(ref)) != null) { - WXAnimationBean animationBean = JSONObject.parseObject(animation, WXAnimationBean.class); + WXAnimationBean animationBean = JSONObject.toJavaObject(animation, WXAnimationBean.class); if (animationBean != null && animationBean.styles != null) { int width = (int) domObject.getLayoutWidth(); int height = (int) domObject.getLayoutHeight(); http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/4dded272/android/sdk/src/main/java/com/taobao/weex/ui/animation/WXAnimationModule.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/animation/WXAnimationModule.java b/android/sdk/src/main/java/com/taobao/weex/ui/animation/WXAnimationModule.java index 43e4b90..3b15347 100644 --- a/android/sdk/src/main/java/com/taobao/weex/ui/animation/WXAnimationModule.java +++ b/android/sdk/src/main/java/com/taobao/weex/ui/animation/WXAnimationModule.java @@ -21,6 +21,7 @@ package com.taobao.weex.ui.animation; import android.support.annotation.Nullable; import android.text.TextUtils; +import com.alibaba.fastjson.JSONObject; import com.taobao.weex.WXSDKInstance; import com.taobao.weex.WXSDKManager; import com.taobao.weex.annotation.JSMethod; @@ -31,13 +32,14 @@ import com.taobao.weex.dom.WXDomHandler; import com.taobao.weex.dom.action.Actions; import com.taobao.weex.ui.component.WXComponent; + import static com.taobao.weex.dom.action.Actions.getAnimationAction; public class WXAnimationModule extends WXModule { @JSMethod - public void transition(@Nullable String ref, @Nullable String animation, @Nullable String callBack) { - if (!TextUtils.isEmpty(ref) && !TextUtils.isEmpty(animation) && mWXSDKInstance != null) { + public void transition(@Nullable String ref, @Nullable JSONObject animation, @Nullable String callBack) { + if (!TextUtils.isEmpty(ref) && animation != null && mWXSDKInstance != null) { DOMAction animationActions = getAnimationAction(ref, animation, callBack); //Due to animation module rely on the result of the css-layout and the batch mechanism of //css-layout, the animation.transition must be delayed the batch time. http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/4dded272/android/sdk/src/main/java/com/taobao/weex/utils/WXReflectionUtils.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/utils/WXReflectionUtils.java b/android/sdk/src/main/java/com/taobao/weex/utils/WXReflectionUtils.java index 5bef6d3..1e424e5 100644 --- a/android/sdk/src/main/java/com/taobao/weex/utils/WXReflectionUtils.java +++ b/android/sdk/src/main/java/com/taobao/weex/utils/WXReflectionUtils.java @@ -31,6 +31,14 @@ import java.math.BigDecimal; public class WXReflectionUtils { public static Object parseArgument(Type paramClazz, Object value) { + if(value != null){ + if(value.getClass() == paramClazz){ + return value; + } + if(value.getClass().isAssignableFrom(value.getClass())){ + return value; + } + } if (paramClazz == String.class) { return value instanceof String ? value : JSON.toJSONString(value); } else if (paramClazz == int.class) { http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/4dded272/android/sdk/src/test/java/com/taobao/weex/ui/animation/WXAnimationModuleTest.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/test/java/com/taobao/weex/ui/animation/WXAnimationModuleTest.java b/android/sdk/src/test/java/com/taobao/weex/ui/animation/WXAnimationModuleTest.java index 7dd4858..52e52fa 100644 --- a/android/sdk/src/test/java/com/taobao/weex/ui/animation/WXAnimationModuleTest.java +++ b/android/sdk/src/test/java/com/taobao/weex/ui/animation/WXAnimationModuleTest.java @@ -18,6 +18,7 @@ */ package com.taobao.weex.ui.animation; +import com.alibaba.fastjson.JSONObject; import com.taobao.weappplus_sdk.BuildConfig; import com.taobao.weex.WXSDKInstanceTest; @@ -50,8 +51,8 @@ public class WXAnimationModuleTest { @Test public void testTransition() throws Exception { - module.transition("","",""); - module.transition("test","test",""); + module.transition("", JSONObject.parseObject("{}"),""); + module.transition("test", JSONObject.parseObject("{\"test\":\"test\"}"),""); } @Test
