Register and unregister might be out of order (5/n)

Calling unregisterHealthObserver() right after startObservingHealth()
will fail to unregister observers correctly because startObservingHealth()
do registration asynchronously.

Let's do unregistration asynchronously as well to keep things in order.

Bug: 178675924
Test: atest PackageWatchdogTest
Change-Id: I7dfea957fb88f0346cdeea20e626a728ec1a1325
This commit is contained in:
JW Wang
2021-01-29 21:25:05 +08:00
parent f054155797
commit 0f9fc342ea

View File

@@ -372,10 +372,12 @@ public class PackageWatchdog {
* even from a previous boot.
*/
public void unregisterHealthObserver(PackageHealthObserver observer) {
synchronized (mLock) {
mAllObservers.remove(observer.getName());
}
syncState("unregistering observer: " + observer.getName());
mLongTaskHandler.post(() -> {
synchronized (mLock) {
mAllObservers.remove(observer.getName());
}
syncState("unregistering observer: " + observer.getName());
});
}
/**