From 197fa0acf226d77e7fcf417d0a519ecd5274e69b Mon Sep 17 00:00:00 2001 From: Hyunyoung Song Date: Tue, 17 May 2022 22:51:10 -0700 Subject: [PATCH] Fix SearchUiService memory leak by removing DeathRecipient from CallbackWrapper Bug: 232548271 Test: used go/ahat to see memory stay steady Change-Id: I182b6dc3ce4d86ab46c5543a1ff68f320fecaa98 --- .../service/search/SearchUiService.java | 25 +++---------------- 1 file changed, 3 insertions(+), 22 deletions(-) diff --git a/core/java/android/service/search/SearchUiService.java b/core/java/android/service/search/SearchUiService.java index c04dd9cd20bc2..02d41ef93262a 100644 --- a/core/java/android/service/search/SearchUiService.java +++ b/core/java/android/service/search/SearchUiService.java @@ -20,7 +20,6 @@ import static com.android.internal.util.function.pooled.PooledLambda.obtainMessa import android.annotation.CallSuper; import android.annotation.MainThread; import android.annotation.NonNull; -import android.annotation.Nullable; import android.annotation.SystemApi; import android.app.Service; import android.app.search.ISearchCallback; @@ -88,7 +87,7 @@ public abstract class SearchUiService extends Service { mHandler.sendMessage( obtainMessage(SearchUiService::onQuery, SearchUiService.this, sessionId, input, - new CallbackWrapper(callback, null))); + new CallbackWrapper(callback))); } @Override @@ -173,21 +172,12 @@ public abstract class SearchUiService extends Service { @MainThread public abstract void onDestroy(@NonNull SearchSessionId sessionId); - private static final class CallbackWrapper implements Consumer>, - IBinder.DeathRecipient { + private static final class CallbackWrapper implements Consumer> { private ISearchCallback mCallback; - private final Consumer mOnBinderDied; - CallbackWrapper(ISearchCallback callback, - @Nullable Consumer onBinderDied) { + CallbackWrapper(ISearchCallback callback) { mCallback = callback; - mOnBinderDied = onBinderDied; - try { - mCallback.asBinder().linkToDeath(this, 0); - } catch (RemoteException e) { - Slog.e(TAG, "Failed to link to death: " + e); - } } @Override @@ -203,14 +193,5 @@ public abstract class SearchUiService extends Service { Slog.e(TAG, "Error sending result:" + e); } } - - @Override - public void binderDied() { - mCallback.asBinder().unlinkToDeath(this, 0); - mCallback = null; - if (mOnBinderDied != null) { - mOnBinderDied.accept(this); - } - } } }