From b546aadd186086e73a853dcddcd3511da8e55cbc Mon Sep 17 00:00:00 2001 From: TYM Tsai Date: Mon, 31 Aug 2020 23:46:59 +0800 Subject: Refactored to ensure thread safety clearServiceWatcher() called on the main thread but resetStaticState() called on the instrumentation thread. Refactored the code to ensure thread safety. Fixes: 166685544 Test: atest ContentCapturePerfTests Change-Id: I9adced9e068112c43554b495bd6dc591f8775945 --- .../android/view/contentcapture/MyContentCaptureService.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/apct-tests/perftests/contentcapture/src/android/view/contentcapture/MyContentCaptureService.java b/apct-tests/perftests/contentcapture/src/android/view/contentcapture/MyContentCaptureService.java index b1dbb28c9501..d07ed375b2ab 100644 --- a/apct-tests/perftests/contentcapture/src/android/view/contentcapture/MyContentCaptureService.java +++ b/apct-tests/perftests/contentcapture/src/android/view/contentcapture/MyContentCaptureService.java @@ -51,13 +51,14 @@ public class MyContentCaptureService extends ContentCaptureService { sServiceWatcher = null; } - public static void clearServiceWatcher() { - if (sServiceWatcher != null) { - if (sServiceWatcher.mReadyToClear) { - sServiceWatcher.mService = null; + private static void clearServiceWatcher() { + final ServiceWatcher sw = sServiceWatcher; + if (sw != null) { + if (sw.mReadyToClear) { + sw.mService = null; sServiceWatcher = null; } else { - sServiceWatcher.mReadyToClear = true; + sw.mReadyToClear = true; } } } -- cgit v1.2.3-59-g8ed1b