From ef31feab628eede05a582b72e42b79631dd5c825 Mon Sep 17 00:00:00 2001 From: shubang Date: Tue, 18 Jan 2022 12:10:30 -0800 Subject: [PATCH] TIAF: build IApp service list for 1st getTvInteractiveAppServiceList To fix the issue that TvIAppService can not be queried when boot up Bug: 213559890 Test: mmm Change-Id: I527f67349cb624484436434d583bde900d4eb484 --- .../tv/interactive/TvInteractiveAppManagerService.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/services/core/java/com/android/server/tv/interactive/TvInteractiveAppManagerService.java b/services/core/java/com/android/server/tv/interactive/TvInteractiveAppManagerService.java index 35cc43faa4e9e..9ead7fe0534b0 100644 --- a/services/core/java/com/android/server/tv/interactive/TvInteractiveAppManagerService.java +++ b/services/core/java/com/android/server/tv/interactive/TvInteractiveAppManagerService.java @@ -95,6 +95,10 @@ public class TvInteractiveAppManagerService extends SystemService { @GuardedBy("mLock") private final SparseArray mUserStates = new SparseArray<>(); + // TODO: remove mGetServiceListCalled if onBootPhrase work correctly + @GuardedBy("mLock") + private boolean mGetServiceListCalled = false; + private final UserManager mUserManager; /** @@ -638,6 +642,10 @@ public class TvInteractiveAppManagerService extends SystemService { final long identity = Binder.clearCallingIdentity(); try { synchronized (mLock) { + if (!mGetServiceListCalled) { + buildTvInteractiveAppServiceListLocked(userId, null); + mGetServiceListCalled = true; + } UserState userState = getOrCreateUserStateLocked(resolvedUserId); List iAppList = new ArrayList<>(); for (TvInteractiveAppState state : userState.mIAppMap.values()) {