diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/jobs/AnimatedMoveViewJob.java b/MPChartLib/src/main/java/com/github/mikephil/charting/jobs/AnimatedMoveViewJob.java index 8f953a06aa..cfc8d1b250 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/jobs/AnimatedMoveViewJob.java +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/jobs/AnimatedMoveViewJob.java @@ -36,6 +36,15 @@ public static AnimatedMoveViewJob getInstance(ViewPortHandler viewPortHandler, f } public static void recycleInstance(AnimatedMoveViewJob instance){ + // Clear reference avoid memory leak + instance.mViewPortHandler = null; + instance.xValue = 0f; + instance.yValue = 0f; + instance.mTrans = null; + instance.view = null; + instance.xOrigin = 0f; + instance.yOrigin = 0f; + instance.animator.setDuration(0); pool.recycle(instance); } diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/jobs/MoveViewJob.java b/MPChartLib/src/main/java/com/github/mikephil/charting/jobs/MoveViewJob.java index 13d853a8e3..a63d441c91 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/jobs/MoveViewJob.java +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/jobs/MoveViewJob.java @@ -31,6 +31,12 @@ public static MoveViewJob getInstance(ViewPortHandler viewPortHandler, float xVa public static void recycleInstance(MoveViewJob instance){ instance.recycle(); + // Clear reference avoid memory leak + instance.mViewPortHandler = null; + instance.xValue = 0f; + instance.yValue = 0f; + instance.mTrans = null; + instance.view = null; pool.recycle(instance); } diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/jobs/ZoomJob.java b/MPChartLib/src/main/java/com/github/mikephil/charting/jobs/ZoomJob.java index c39586ca87..c4098ea0b7 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/jobs/ZoomJob.java +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/jobs/ZoomJob.java @@ -37,6 +37,15 @@ public static ZoomJob getInstance(ViewPortHandler viewPortHandler, float scaleX, } public static void recycleInstance(ZoomJob instance) { + // Clear reference avoid memory leak + instance.xValue = 0f; + instance.yValue = 0f; + instance.scaleX = 0f; + instance.scaleY = 0f; + instance.mViewPortHandler = null; + instance.mTrans = null; + instance.axisDependency = null; + instance.view = null; pool.recycle(instance); } diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/utils/ObjectPool.java b/MPChartLib/src/main/java/com/github/mikephil/charting/utils/ObjectPool.java index d1d54371f9..15e7fc0b88 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/utils/ObjectPool.java +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/utils/ObjectPool.java @@ -117,6 +117,7 @@ public synchronized T get(){ } T result = (T)objects[this.objectsPointer]; + objects[this.objectsPointer] = null; result.currentOwnerId = Poolable.NO_OWNER; this.objectsPointer--;