Merge "Update connected devices sets when app is killed" into tm-dev

This commit is contained in:
Evan Chen
2022-05-04 19:49:56 +00:00
committed by Android (Google) Code Review
2 changed files with 19 additions and 3 deletions

View File

@@ -294,6 +294,15 @@ public class CompanionDeviceManagerService extends SystemService {
private boolean onCompanionApplicationBindingDiedInternal( private boolean onCompanionApplicationBindingDiedInternal(
@UserIdInt int userId, @NonNull String packageName) { @UserIdInt int userId, @NonNull String packageName) {
// Update the current connected devices sets when binderDied, so that application is able
// to call notifyDeviceAppeared after re-launch the application.
for (AssociationInfo ai :
mAssociationStore.getAssociationsForPackage(userId, packageName)) {
int id = ai.getId();
Slog.i(TAG, "Removing association id: " + id + " for package: "
+ packageName + " due to binderDied.");
mDevicePresenceMonitor.removeDeviceFromMonitoring(id);
}
// TODO(b/218613015): implement. // TODO(b/218613015): implement.
return false; return false;
} }

View File

@@ -205,6 +205,15 @@ public class CompanionDevicePresenceMonitor implements AssociationStore.OnChange
mCallback.onDeviceDisappeared(goneDeviceAssociationId); mCallback.onDeviceDisappeared(goneDeviceAssociationId);
} }
/**
* Remove the current connected devices by associationId.
*/
public void removeDeviceFromMonitoring(int associationId) {
mConnectedBtDevices.remove(associationId);
mNearbyBleDevices.remove(associationId);
mReportedSelfManagedDevices.remove(associationId);
}
/** /**
* Implements * Implements
* {@link AssociationStore.OnChangeListener#onAssociationRemoved(AssociationInfo)} * {@link AssociationStore.OnChangeListener#onAssociationRemoved(AssociationInfo)}
@@ -217,9 +226,7 @@ public class CompanionDevicePresenceMonitor implements AssociationStore.OnChange
Log.d(TAG, " > association=" + association); Log.d(TAG, " > association=" + association);
} }
mConnectedBtDevices.remove(id); removeDeviceFromMonitoring(id);
mNearbyBleDevices.remove(id);
mReportedSelfManagedDevices.remove(id);
// Do NOT call mCallback.onDeviceDisappeared()! // Do NOT call mCallback.onDeviceDisappeared()!
// CompanionDeviceManagerService will know that the association is removed, and will do // CompanionDeviceManagerService will know that the association is removed, and will do