diff options
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/settings/UserTrackerImpl.kt | 23 | ||||
| -rw-r--r-- | packages/SystemUI/tests/src/com/android/systemui/settings/UserTrackerImplTest.kt | 1 |
2 files changed, 12 insertions, 12 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/settings/UserTrackerImpl.kt b/packages/SystemUI/src/com/android/systemui/settings/UserTrackerImpl.kt index f2fa0ef3f30f..125f7fc0619b 100644 --- a/packages/SystemUI/src/com/android/systemui/settings/UserTrackerImpl.kt +++ b/packages/SystemUI/src/com/android/systemui/settings/UserTrackerImpl.kt @@ -121,7 +121,6 @@ open class UserTrackerImpl internal constructor( @GuardedBy("callbacks") private val callbacks: MutableList<DataItem> = ArrayList() - private var beforeUserSwitchingJob: Job? = null private var userSwitchingJob: Job? = null private var afterUserSwitchingJob: Job? = null @@ -194,14 +193,7 @@ open class UserTrackerImpl internal constructor( private fun registerUserSwitchObserver() { iActivityManager.registerUserSwitchObserver(object : UserSwitchObserver() { override fun onBeforeUserSwitching(newUserId: Int) { - if (isBackgroundUserSwitchEnabled) { - beforeUserSwitchingJob?.cancel() - beforeUserSwitchingJob = appScope.launch(backgroundContext) { - handleBeforeUserSwitching(newUserId) - } - } else { - handleBeforeUserSwitching(newUserId) - } + handleBeforeUserSwitching(newUserId) } override fun onUserSwitching(newUserId: Int, reply: IRemoteCallback?) { @@ -233,15 +225,24 @@ open class UserTrackerImpl internal constructor( @WorkerThread protected open fun handleBeforeUserSwitching(newUserId: Int) { - Assert.isNotMainThread() setUserIdInternal(newUserId) val list = synchronized(callbacks) { callbacks.toList() } + val latch = CountDownLatch(list.size) list.forEach { - it.callback.get()?.onBeforeUserSwitching(newUserId) + val callback = it.callback.get() + if (callback != null) { + it.executor.execute { + callback.onBeforeUserSwitching(newUserId) + latch.countDown() + } + } else { + latch.countDown() + } } + latch.await() } @WorkerThread diff --git a/packages/SystemUI/tests/src/com/android/systemui/settings/UserTrackerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/settings/UserTrackerImplTest.kt index 032ec7440923..774aa517672e 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/settings/UserTrackerImplTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/settings/UserTrackerImplTest.kt @@ -371,7 +371,6 @@ class UserTrackerImplTest : SysuiTestCase() { val captor = ArgumentCaptor.forClass(IUserSwitchObserver::class.java) verify(iActivityManager).registerUserSwitchObserver(capture(captor), anyString()) - captor.value.onBeforeUserSwitching(newID) captor.value.onUserSwitching(newID, userSwitchingReply) assertThat(callback.calledOnUserChanging).isEqualTo(0) |