Merge "Additional debug logging to triage shortcut related issue." into sc-dev am: a155f61f78
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/14235993 Change-Id: Ic57603d80bc42da1b9e053bb2d03ee5190d1641c
This commit is contained in:
@@ -109,6 +109,8 @@ import java.util.concurrent.CancellationException;
|
|||||||
public class LoaderTask implements Runnable {
|
public class LoaderTask implements Runnable {
|
||||||
private static final String TAG = "LoaderTask";
|
private static final String TAG = "LoaderTask";
|
||||||
|
|
||||||
|
private static final boolean DEBUG = true;
|
||||||
|
|
||||||
protected final LauncherAppState mApp;
|
protected final LauncherAppState mApp;
|
||||||
private final AllAppsList mBgAllAppsList;
|
private final AllAppsList mBgAllAppsList;
|
||||||
protected final BgDataModel mBgDataModel;
|
protected final BgDataModel mBgDataModel;
|
||||||
@@ -190,7 +192,7 @@ public class LoaderTask implements Runnable {
|
|||||||
try (LauncherModel.LoaderTransaction transaction = mApp.getModel().beginLoader(this)) {
|
try (LauncherModel.LoaderTransaction transaction = mApp.getModel().beginLoader(this)) {
|
||||||
List<ShortcutInfo> allShortcuts = new ArrayList<>();
|
List<ShortcutInfo> allShortcuts = new ArrayList<>();
|
||||||
loadWorkspace(allShortcuts);
|
loadWorkspace(allShortcuts);
|
||||||
logger.addSplit("loadWorkspace");
|
logASplit(logger, "loadWorkspace");
|
||||||
|
|
||||||
// Sanitize data re-syncs widgets/shortcuts based on the workspace loaded from db.
|
// Sanitize data re-syncs widgets/shortcuts based on the workspace loaded from db.
|
||||||
// sanitizeData should not be invoked if the workspace is loaded from a db different
|
// sanitizeData should not be invoked if the workspace is loaded from a db different
|
||||||
@@ -199,30 +201,30 @@ public class LoaderTask implements Runnable {
|
|||||||
if (mApp.getInvariantDeviceProfile().dbFile.equals(mDbName)) {
|
if (mApp.getInvariantDeviceProfile().dbFile.equals(mDbName)) {
|
||||||
verifyNotStopped();
|
verifyNotStopped();
|
||||||
sanitizeData();
|
sanitizeData();
|
||||||
logger.addSplit("sanitizeData");
|
logASplit(logger, "sanitizeData");
|
||||||
}
|
}
|
||||||
|
|
||||||
verifyNotStopped();
|
verifyNotStopped();
|
||||||
mResults.bindWorkspace();
|
mResults.bindWorkspace();
|
||||||
logger.addSplit("bindWorkspace");
|
logASplit(logger, "bindWorkspace");
|
||||||
|
|
||||||
mModelDelegate.workspaceLoadComplete();
|
mModelDelegate.workspaceLoadComplete();
|
||||||
// Notify the installer packages of packages with active installs on the first screen.
|
// Notify the installer packages of packages with active installs on the first screen.
|
||||||
sendFirstScreenActiveInstallsBroadcast();
|
sendFirstScreenActiveInstallsBroadcast();
|
||||||
logger.addSplit("sendFirstScreenActiveInstallsBroadcast");
|
logASplit(logger, "sendFirstScreenActiveInstallsBroadcast");
|
||||||
|
|
||||||
// Take a break
|
// Take a break
|
||||||
waitForIdle();
|
waitForIdle();
|
||||||
logger.addSplit("step 1 complete");
|
logASplit(logger, "step 1 complete");
|
||||||
verifyNotStopped();
|
verifyNotStopped();
|
||||||
|
|
||||||
// second step
|
// second step
|
||||||
List<LauncherActivityInfo> allActivityList = loadAllApps();
|
List<LauncherActivityInfo> allActivityList = loadAllApps();
|
||||||
logger.addSplit("loadAllApps");
|
logASplit(logger, "loadAllApps");
|
||||||
|
|
||||||
verifyNotStopped();
|
verifyNotStopped();
|
||||||
mResults.bindAllApps();
|
mResults.bindAllApps();
|
||||||
logger.addSplit("bindAllApps");
|
logASplit(logger, "bindAllApps");
|
||||||
|
|
||||||
verifyNotStopped();
|
verifyNotStopped();
|
||||||
IconCacheUpdateHandler updateHandler = mIconCache.getUpdateHandler();
|
IconCacheUpdateHandler updateHandler = mIconCache.getUpdateHandler();
|
||||||
@@ -230,54 +232,54 @@ public class LoaderTask implements Runnable {
|
|||||||
updateHandler.updateIcons(allActivityList,
|
updateHandler.updateIcons(allActivityList,
|
||||||
LauncherActivityCachingLogic.newInstance(mApp.getContext()),
|
LauncherActivityCachingLogic.newInstance(mApp.getContext()),
|
||||||
mApp.getModel()::onPackageIconsUpdated);
|
mApp.getModel()::onPackageIconsUpdated);
|
||||||
logger.addSplit("update icon cache");
|
logASplit(logger, "update icon cache");
|
||||||
|
|
||||||
if (FeatureFlags.ENABLE_DEEP_SHORTCUT_ICON_CACHE.get()) {
|
if (FeatureFlags.ENABLE_DEEP_SHORTCUT_ICON_CACHE.get()) {
|
||||||
verifyNotStopped();
|
verifyNotStopped();
|
||||||
logger.addSplit("save shortcuts in icon cache");
|
logASplit(logger, "save shortcuts in icon cache");
|
||||||
updateHandler.updateIcons(allShortcuts, new ShortcutCachingLogic(),
|
updateHandler.updateIcons(allShortcuts, new ShortcutCachingLogic(),
|
||||||
mApp.getModel()::onPackageIconsUpdated);
|
mApp.getModel()::onPackageIconsUpdated);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Take a break
|
// Take a break
|
||||||
waitForIdle();
|
waitForIdle();
|
||||||
logger.addSplit("step 2 complete");
|
logASplit(logger, "step 2 complete");
|
||||||
verifyNotStopped();
|
verifyNotStopped();
|
||||||
|
|
||||||
// third step
|
// third step
|
||||||
List<ShortcutInfo> allDeepShortcuts = loadDeepShortcuts();
|
List<ShortcutInfo> allDeepShortcuts = loadDeepShortcuts();
|
||||||
logger.addSplit("loadDeepShortcuts");
|
logASplit(logger, "loadDeepShortcuts");
|
||||||
|
|
||||||
verifyNotStopped();
|
verifyNotStopped();
|
||||||
mResults.bindDeepShortcuts();
|
mResults.bindDeepShortcuts();
|
||||||
logger.addSplit("bindDeepShortcuts");
|
logASplit(logger, "bindDeepShortcuts");
|
||||||
|
|
||||||
if (FeatureFlags.ENABLE_DEEP_SHORTCUT_ICON_CACHE.get()) {
|
if (FeatureFlags.ENABLE_DEEP_SHORTCUT_ICON_CACHE.get()) {
|
||||||
verifyNotStopped();
|
verifyNotStopped();
|
||||||
logger.addSplit("save deep shortcuts in icon cache");
|
logASplit(logger, "save deep shortcuts in icon cache");
|
||||||
updateHandler.updateIcons(allDeepShortcuts,
|
updateHandler.updateIcons(allDeepShortcuts,
|
||||||
new ShortcutCachingLogic(), (pkgs, user) -> { });
|
new ShortcutCachingLogic(), (pkgs, user) -> { });
|
||||||
}
|
}
|
||||||
|
|
||||||
// Take a break
|
// Take a break
|
||||||
waitForIdle();
|
waitForIdle();
|
||||||
logger.addSplit("step 3 complete");
|
logASplit(logger, "step 3 complete");
|
||||||
verifyNotStopped();
|
verifyNotStopped();
|
||||||
|
|
||||||
// fourth step
|
// fourth step
|
||||||
List<ComponentWithLabelAndIcon> allWidgetsList =
|
List<ComponentWithLabelAndIcon> allWidgetsList =
|
||||||
mBgDataModel.widgetsModel.update(mApp, null);
|
mBgDataModel.widgetsModel.update(mApp, null);
|
||||||
logger.addSplit("load widgets");
|
logASplit(logger, "load widgets");
|
||||||
|
|
||||||
verifyNotStopped();
|
verifyNotStopped();
|
||||||
mResults.bindWidgets();
|
mResults.bindWidgets();
|
||||||
logger.addSplit("bindWidgets");
|
logASplit(logger, "bindWidgets");
|
||||||
verifyNotStopped();
|
verifyNotStopped();
|
||||||
|
|
||||||
updateHandler.updateIcons(allWidgetsList,
|
updateHandler.updateIcons(allWidgetsList,
|
||||||
new ComponentWithIconCachingLogic(mApp.getContext(), true),
|
new ComponentWithIconCachingLogic(mApp.getContext(), true),
|
||||||
mApp.getModel()::onWidgetLabelsUpdated);
|
mApp.getModel()::onWidgetLabelsUpdated);
|
||||||
logger.addSplit("save widgets in icon cache");
|
logASplit(logger, "save widgets in icon cache");
|
||||||
|
|
||||||
// fifth step
|
// fifth step
|
||||||
if (FeatureFlags.FOLDER_NAME_SUGGEST.get()) {
|
if (FeatureFlags.FOLDER_NAME_SUGGEST.get()) {
|
||||||
@@ -286,13 +288,13 @@ public class LoaderTask implements Runnable {
|
|||||||
|
|
||||||
verifyNotStopped();
|
verifyNotStopped();
|
||||||
updateHandler.finish();
|
updateHandler.finish();
|
||||||
logger.addSplit("finish icon update");
|
logASplit(logger, "finish icon update");
|
||||||
|
|
||||||
mModelDelegate.modelLoadComplete();
|
mModelDelegate.modelLoadComplete();
|
||||||
transaction.commit();
|
transaction.commit();
|
||||||
} catch (CancellationException e) {
|
} catch (CancellationException e) {
|
||||||
// Loader stopped, ignore
|
// Loader stopped, ignore
|
||||||
logger.addSplit("Cancelled");
|
logASplit(logger, "Cancelled");
|
||||||
} finally {
|
} finally {
|
||||||
logger.dumpToLog();
|
logger.dumpToLog();
|
||||||
}
|
}
|
||||||
@@ -977,4 +979,11 @@ public class LoaderTask implements Runnable {
|
|||||||
return (provider != null) && (provider.provider != null)
|
return (provider != null) && (provider.provider != null)
|
||||||
&& (provider.provider.getPackageName() != null);
|
&& (provider.provider.getPackageName() != null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void logASplit(final TimingLogger logger, final String label) {
|
||||||
|
logger.addSplit(label);
|
||||||
|
if (DEBUG) {
|
||||||
|
Log.d(TAG, label);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user