Set mBound only when bind succeeds
Fixes an issue that TV input is disabled forever after package upgrade, when it's upgraded while in use. The root cause is as below: - Package is killed while upgrade. - Service disconnects, and tries to rebind for reconnecting, but bind fails because service is not available temporarily. Still ServiceState.mBound is set to true. - Should rebind next when callback is registered or new session is created, but doesn't because ServiceState is already marked bound. Bug: 14981201 Change-Id: Ia5b0acb33f1247064213024438f114bc40238648
This commit is contained in:
@ -301,9 +301,8 @@ public final class TvInputManagerService extends SystemService {
|
||||
|
||||
Intent i = new Intent(TvInputService.SERVICE_INTERFACE).setComponent(
|
||||
userState.inputMap.get(inputId).getComponent());
|
||||
mContext.bindServiceAsUser(i, serviceState.mConnection, Context.BIND_AUTO_CREATE,
|
||||
new UserHandle(userId));
|
||||
serviceState.mBound = true;
|
||||
serviceState.mBound = mContext.bindServiceAsUser(
|
||||
i, serviceState.mConnection, Context.BIND_AUTO_CREATE, new UserHandle(userId));
|
||||
} else if (serviceState.mService != null && isStateEmpty) {
|
||||
// This means that the service is already connected but its state indicates that we have
|
||||
// nothing to do with it. Then, disconnect the service.
|
||||
|
Reference in New Issue
Block a user