From 83be4ae5ad1c68efc14c932cd7e8a48545f78e87 Mon Sep 17 00:00:00 2001 From: Fabian Kozynski Date: Tue, 17 Nov 2020 16:58:02 -0500 Subject: [PATCH] Empty message queue on TileService#onDestroy onDestroy is called by system_server asynchronously on the main thread. If there are queued messages (from the binder interface), remove them. This follows the contract that methods in the service will not be called after onDestroy Test: manual with test tile Fixes: 172511340 Change-Id: I7d46c065d5a9597ce1d44bc5707e79b302b201f6 --- core/java/android/service/quicksettings/TileService.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/java/android/service/quicksettings/TileService.java b/core/java/android/service/quicksettings/TileService.java index b4b5819c7d5fa..53290e2ede5a7 100644 --- a/core/java/android/service/quicksettings/TileService.java +++ b/core/java/android/service/quicksettings/TileService.java @@ -176,6 +176,9 @@ public class TileService extends Service { @Override public void onDestroy() { + // As this call will come asynchronously in the main thread, prevent calls from the binder + // being processed after this. + mHandler.removeCallbacksAndMessages(null); if (mListening) { onStopListening(); mListening = false;