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
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.