From b8a4faee85feb291822e28073ba72306c3f0cf59 Mon Sep 17 00:00:00 2001 From: qiduhe Date: Wed, 2 Jul 2025 18:08:55 +0800 Subject: [PATCH 1/2] Fix the problem that the pool static property holds the View reference, which causes Activity memory leak --- .../java/com/github/mikephil/charting/jobs/MoveViewJob.java | 3 +++ 1 file changed, 3 insertions(+) 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 46b56b1347..01ff603d19 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 @@ -30,6 +30,9 @@ public static MoveViewJob getInstance(ViewPortHandler viewPortHandler, float xVa } public static void recycleInstance(MoveViewJob instance){ + instance.mViewPortHandler = null; + instance.mTrans = null; + instance.view = null; pool.recycle(instance); } From 3a149f0bd865628ae3807049c287bf968cc17a37 Mon Sep 17 00:00:00 2001 From: qiduhe Date: Wed, 2 Jul 2025 18:26:07 +0800 Subject: [PATCH 2/2] Fix the problem that the pool static property holds the View reference, which causes Activity memory leak --- .../github/mikephil/charting/jobs/AnimatedMoveViewJob.java | 1 + .../java/com/github/mikephil/charting/jobs/MoveViewJob.java | 4 +--- .../java/com/github/mikephil/charting/jobs/ViewPortJob.java | 6 ++++++ .../java/com/github/mikephil/charting/jobs/ZoomJob.java | 1 + 4 files changed, 9 insertions(+), 3 deletions(-) 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..6346e58ee4 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,7 @@ public static AnimatedMoveViewJob getInstance(ViewPortHandler viewPortHandler, f } public static void recycleInstance(AnimatedMoveViewJob instance){ + instance.recycle(); 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 01ff603d19..13d853a8e3 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 @@ -30,9 +30,7 @@ public static MoveViewJob getInstance(ViewPortHandler viewPortHandler, float xVa } public static void recycleInstance(MoveViewJob instance){ - instance.mViewPortHandler = null; - instance.mTrans = null; - instance.view = null; + instance.recycle(); pool.recycle(instance); } diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/jobs/ViewPortJob.java b/MPChartLib/src/main/java/com/github/mikephil/charting/jobs/ViewPortJob.java index c424e4b87a..aed79ae5b3 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/jobs/ViewPortJob.java +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/jobs/ViewPortJob.java @@ -44,4 +44,10 @@ public float getXValue() { public float getYValue() { return yValue; } + + public void recycle() { + mViewPortHandler = null; + mTrans = null; + view = null; + } } 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..fbe7cf2591 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,7 @@ public static ZoomJob getInstance(ViewPortHandler viewPortHandler, float scaleX, } public static void recycleInstance(ZoomJob instance) { + instance.recycle(); pool.recycle(instance); }