From 25cfe34cff45bdfff8f490c7d2a453cc7ad97847 Mon Sep 17 00:00:00 2001 From: iPel Date: Thu, 7 Dec 2023 15:47:41 +0800 Subject: [PATCH] fix(android): prevent layout helper queue hold too many objects --- .../java/com/tencent/mtt/hippy/dom/node/LayoutHelper.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/android/sdk/src/main/java/com/tencent/mtt/hippy/dom/node/LayoutHelper.java b/android/sdk/src/main/java/com/tencent/mtt/hippy/dom/node/LayoutHelper.java index e3353dc1bc4..e2fa777f191 100644 --- a/android/sdk/src/main/java/com/tencent/mtt/hippy/dom/node/LayoutHelper.java +++ b/android/sdk/src/main/java/com/tencent/mtt/hippy/dom/node/LayoutHelper.java @@ -24,12 +24,15 @@ import com.tencent.mtt.hippy.common.HippyHandlerThread; import com.tencent.mtt.hippy.common.HippyThreadRunnable; import com.tencent.mtt.hippy.utils.LogUtils; +import java.util.concurrent.atomic.AtomicInteger; @SuppressWarnings({"unused"}) public class LayoutHelper { + private static final int MAX_QUEUE_SIZE = 200; private HippyHandlerThread mHandlerThread; private final Picture mPicture = new Picture(); + private final AtomicInteger mQueueSize = new AtomicInteger(0); public LayoutHelper() { mHandlerThread = new HippyHandlerThread("text-warm-thread"); @@ -43,11 +46,13 @@ public void release() { } public void postWarmLayout(Layout layout) { - if (mHandlerThread != null && mHandlerThread.isThreadAlive()) { + if (mHandlerThread != null && mHandlerThread.isThreadAlive() && mQueueSize.get() < MAX_QUEUE_SIZE) { + mQueueSize.getAndIncrement(); mHandlerThread.runOnQueue(new HippyThreadRunnable(layout) { @Override public void run(Layout param) { warmUpLayout(param); + mQueueSize.getAndDecrement(); } }); }