Merge "Try to rebind disconnected wallpaper service for 10 seconds." into qt-qpr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
c1e4900355
@@ -1237,6 +1237,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
|
||||
saveSettingsLocked(mWallpaper.userId);
|
||||
}
|
||||
FgThread.getHandler().removeCallbacks(mResetRunnable);
|
||||
mContext.getMainThreadHandler().removeCallbacks(this::tryToRebind);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1279,6 +1280,34 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
|
||||
}
|
||||
}
|
||||
|
||||
private void tryToRebind() {
|
||||
synchronized (mLock) {
|
||||
if (mWallpaper.wallpaperUpdating) {
|
||||
return;
|
||||
}
|
||||
final ComponentName wpService = mWallpaper.wallpaperComponent;
|
||||
// The broadcast of package update could be delayed after service disconnected. Try
|
||||
// to re-bind the service for 10 seconds.
|
||||
if (bindWallpaperComponentLocked(
|
||||
wpService, true, false, mWallpaper, null)) {
|
||||
mWallpaper.connection.scheduleTimeoutLocked();
|
||||
} else if (SystemClock.uptimeMillis() - mWallpaper.lastDiedTime
|
||||
< WALLPAPER_RECONNECT_TIMEOUT_MS) {
|
||||
// Bind fail without timeout, schedule rebind
|
||||
Slog.w(TAG, "Rebind fail! Try again later");
|
||||
mContext.getMainThreadHandler().postDelayed(this::tryToRebind, 1000);
|
||||
} else {
|
||||
// Timeout
|
||||
Slog.w(TAG, "Reverting to built-in wallpaper!");
|
||||
clearWallpaperLocked(true, FLAG_SYSTEM, mWallpaper.userId, null);
|
||||
final String flattened = wpService.flattenToString();
|
||||
EventLog.writeEvent(EventLogTags.WP_WALLPAPER_CRASHED,
|
||||
flattened.substring(0, Math.min(flattened.length(),
|
||||
MAX_WALLPAPER_COMPONENT_LOG_LENGTH)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void processDisconnect(final ServiceConnection connection) {
|
||||
synchronized (mLock) {
|
||||
// The wallpaper disappeared. If this isn't a system-default one, track
|
||||
@@ -1302,20 +1331,8 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
|
||||
clearWallpaperLocked(true, FLAG_SYSTEM, mWallpaper.userId, null);
|
||||
} else {
|
||||
mWallpaper.lastDiedTime = SystemClock.uptimeMillis();
|
||||
|
||||
clearWallpaperComponentLocked(mWallpaper);
|
||||
if (bindWallpaperComponentLocked(
|
||||
wpService, false, false, mWallpaper, null)) {
|
||||
mWallpaper.connection.scheduleTimeoutLocked();
|
||||
} else {
|
||||
Slog.w(TAG, "Reverting to built-in wallpaper!");
|
||||
clearWallpaperLocked(true, FLAG_SYSTEM, mWallpaper.userId, null);
|
||||
}
|
||||
tryToRebind();
|
||||
}
|
||||
final String flattened = wpService.flattenToString();
|
||||
EventLog.writeEvent(EventLogTags.WP_WALLPAPER_CRASHED,
|
||||
flattened.substring(0, Math.min(flattened.length(),
|
||||
MAX_WALLPAPER_COMPONENT_LOG_LENGTH)));
|
||||
}
|
||||
} else {
|
||||
if (DEBUG_LIVE) {
|
||||
|
||||
Reference in New Issue
Block a user