diff options
| author | 2020-07-24 02:15:39 +0000 | |
|---|---|---|
| committer | 2020-07-24 02:15:39 +0000 | |
| commit | 4d7f81e9798f887b2613716f6a28aba61b341717 (patch) | |
| tree | e77a52cd56fde19f24c12502ed479e27669ddd9d | |
| parent | 660a872c7a2a2094d2c83d47fb47a3d9ebc8cbf7 (diff) | |
| parent | 540d92d28cf91edc86e59a48223b898f63f6009a (diff) | |
Merge "Remove possible residual callbacks when detach wallpaper." into rvc-qpr-dev
| -rw-r--r-- | services/core/java/com/android/server/wallpaper/WallpaperManagerService.java | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java index 31fbaff17e78..1300e657333c 100644 --- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java +++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java @@ -1175,9 +1175,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub } }; - private Runnable mTryToRebindRunnable = () -> { - tryToRebind(); - }; + private Runnable mTryToRebindRunnable = this::tryToRebind; WallpaperConnection(WallpaperInfo info, WallpaperData wallpaper, int clientUid) { mInfo = info; @@ -1310,14 +1308,14 @@ public class WallpaperManagerService extends IWallpaperManager.Stub // a short time in the future, specifically to allow any pending package // update message on this same looper thread to be processed. if (!mWallpaper.wallpaperUpdating) { - mContext.getMainThreadHandler().postDelayed(() -> processDisconnect(this), + mContext.getMainThreadHandler().postDelayed(mDisconnectRunnable, 1000); } } } } - public void scheduleTimeoutLocked() { + private void scheduleTimeoutLocked() { // If we didn't reset it right away, do so after we couldn't connect to // it for an extended amount of time to avoid having a black wallpaper. final Handler fgHandler = FgThread.getHandler(); @@ -1357,11 +1355,11 @@ public class WallpaperManagerService extends IWallpaperManager.Stub } } - private void processDisconnect(final ServiceConnection connection) { + private Runnable mDisconnectRunnable = () -> { synchronized (mLock) { // The wallpaper disappeared. If this isn't a system-default one, track // crashes and fall back to default if it continues to misbehave. - if (connection == mWallpaper.connection) { + if (this == mWallpaper.connection) { final ComponentName wpService = mWallpaper.wallpaperComponent; if (!mWallpaper.wallpaperUpdating && mWallpaper.userId == mCurrentUserId @@ -1389,7 +1387,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub } } } - } + }; /** * Called by a live wallpaper if its colors have changed. @@ -2801,6 +2799,13 @@ public class WallpaperManagerService extends IWallpaperManager.Stub WallpaperConnection.DisplayConnector::disconnectLocked); wallpaper.connection.mService = null; wallpaper.connection.mDisplayConnector.clear(); + + FgThread.getHandler().removeCallbacks(wallpaper.connection.mResetRunnable); + mContext.getMainThreadHandler().removeCallbacks( + wallpaper.connection.mDisconnectRunnable); + mContext.getMainThreadHandler().removeCallbacks( + wallpaper.connection.mTryToRebindRunnable); + wallpaper.connection = null; if (wallpaper == mLastWallpaper) mLastWallpaper = null; } |