Merge "Remove possible residual callbacks when detach wallpaper." into rvc-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
4d7f81e979
@@ -1175,9 +1175,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private Runnable mTryToRebindRunnable = () -> {
|
private Runnable mTryToRebindRunnable = this::tryToRebind;
|
||||||
tryToRebind();
|
|
||||||
};
|
|
||||||
|
|
||||||
WallpaperConnection(WallpaperInfo info, WallpaperData wallpaper, int clientUid) {
|
WallpaperConnection(WallpaperInfo info, WallpaperData wallpaper, int clientUid) {
|
||||||
mInfo = info;
|
mInfo = info;
|
||||||
@@ -1310,14 +1308,14 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
|
|||||||
// a short time in the future, specifically to allow any pending package
|
// a short time in the future, specifically to allow any pending package
|
||||||
// update message on this same looper thread to be processed.
|
// update message on this same looper thread to be processed.
|
||||||
if (!mWallpaper.wallpaperUpdating) {
|
if (!mWallpaper.wallpaperUpdating) {
|
||||||
mContext.getMainThreadHandler().postDelayed(() -> processDisconnect(this),
|
mContext.getMainThreadHandler().postDelayed(mDisconnectRunnable,
|
||||||
1000);
|
1000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void scheduleTimeoutLocked() {
|
private void scheduleTimeoutLocked() {
|
||||||
// If we didn't reset it right away, do so after we couldn't connect to
|
// 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.
|
// it for an extended amount of time to avoid having a black wallpaper.
|
||||||
final Handler fgHandler = FgThread.getHandler();
|
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) {
|
synchronized (mLock) {
|
||||||
// The wallpaper disappeared. If this isn't a system-default one, track
|
// The wallpaper disappeared. If this isn't a system-default one, track
|
||||||
// crashes and fall back to default if it continues to misbehave.
|
// crashes and fall back to default if it continues to misbehave.
|
||||||
if (connection == mWallpaper.connection) {
|
if (this == mWallpaper.connection) {
|
||||||
final ComponentName wpService = mWallpaper.wallpaperComponent;
|
final ComponentName wpService = mWallpaper.wallpaperComponent;
|
||||||
if (!mWallpaper.wallpaperUpdating
|
if (!mWallpaper.wallpaperUpdating
|
||||||
&& mWallpaper.userId == mCurrentUserId
|
&& mWallpaper.userId == mCurrentUserId
|
||||||
@@ -1389,7 +1387,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called by a live wallpaper if its colors have changed.
|
* Called by a live wallpaper if its colors have changed.
|
||||||
@@ -2801,6 +2799,13 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
|
|||||||
WallpaperConnection.DisplayConnector::disconnectLocked);
|
WallpaperConnection.DisplayConnector::disconnectLocked);
|
||||||
wallpaper.connection.mService = null;
|
wallpaper.connection.mService = null;
|
||||||
wallpaper.connection.mDisplayConnector.clear();
|
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;
|
wallpaper.connection = null;
|
||||||
if (wallpaper == mLastWallpaper) mLastWallpaper = null;
|
if (wallpaper == mLastWallpaper) mLastWallpaper = null;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user