mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-03-01 00:06:47 +00:00
[1/n] Launcher Startup Latency: add StartupLatencyLogger to launcher3 and log startup latency
More details at "Log Startup Latency" section in go/launcher-startup-latency Test: tested on phone, foldable and tablet, print latency logs in logcat Bug: 278092752 Change-Id: Ibf269b0ecd6007d29b95e36f65ab6f02c45deb3a
This commit is contained in:
@@ -78,14 +78,14 @@ public abstract class BaseLauncherBinder {
|
||||
/**
|
||||
* Binds all loaded data to actual views on the main thread.
|
||||
*/
|
||||
public void bindWorkspace(boolean incrementBindId) {
|
||||
public void bindWorkspace(boolean incrementBindId, boolean isBindSync) {
|
||||
if (FeatureFlags.ENABLE_WORKSPACE_LOADING_OPTIMIZATION.get()) {
|
||||
DisjointWorkspaceBinder workspaceBinder =
|
||||
initWorkspaceBinder(incrementBindId, mBgDataModel.collectWorkspaceScreens());
|
||||
workspaceBinder.bindCurrentWorkspacePages();
|
||||
workspaceBinder.bindCurrentWorkspacePages(isBindSync);
|
||||
workspaceBinder.bindOtherWorkspacePages();
|
||||
} else {
|
||||
bindWorkspaceAllAtOnce(incrementBindId);
|
||||
bindWorkspaceAllAtOnce(incrementBindId, isBindSync);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -108,13 +108,13 @@ public abstract class BaseLauncherBinder {
|
||||
}
|
||||
}
|
||||
|
||||
private void bindWorkspaceAllAtOnce(boolean incrementBindId) {
|
||||
private void bindWorkspaceAllAtOnce(boolean incrementBindId, boolean isBindSync) {
|
||||
// Save a copy of all the bg-thread collections
|
||||
ArrayList<ItemInfo> workspaceItems = new ArrayList<>();
|
||||
ArrayList<LauncherAppWidgetInfo> appWidgets = new ArrayList<>();
|
||||
final IntArray orderedScreenIds = new IntArray();
|
||||
ArrayList<FixedContainerItems> extraItems = new ArrayList<>();
|
||||
|
||||
final int workspaceItemCount;
|
||||
synchronized (mBgDataModel) {
|
||||
workspaceItems.addAll(mBgDataModel.workspaceItems);
|
||||
appWidgets.addAll(mBgDataModel.appWidgets);
|
||||
@@ -124,11 +124,13 @@ public abstract class BaseLauncherBinder {
|
||||
mBgDataModel.lastBindId++;
|
||||
}
|
||||
mMyBindingId = mBgDataModel.lastBindId;
|
||||
workspaceItemCount = mBgDataModel.itemsIdMap.size();
|
||||
}
|
||||
|
||||
for (Callbacks cb : mCallbacksList) {
|
||||
new UnifiedWorkspaceBinder(cb, mUiExecutor, mApp, mBgDataModel, mMyBindingId,
|
||||
workspaceItems, appWidgets, extraItems, orderedScreenIds).bind();
|
||||
workspaceItems, appWidgets, extraItems, orderedScreenIds)
|
||||
.bind(isBindSync, workspaceItemCount);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -246,7 +248,7 @@ public abstract class BaseLauncherBinder {
|
||||
mOrderedScreenIds = orderedScreenIds;
|
||||
}
|
||||
|
||||
private void bind() {
|
||||
private void bind(boolean isBindSync, int workspaceItemCount) {
|
||||
final IntSet currentScreenIds =
|
||||
mCallbacks.getPagesToBindSynchronously(mOrderedScreenIds);
|
||||
Objects.requireNonNull(currentScreenIds, "Null screen ids provided by " + mCallbacks);
|
||||
@@ -297,7 +299,8 @@ public abstract class BaseLauncherBinder {
|
||||
executeCallbacksTask(
|
||||
c -> {
|
||||
MODEL_EXECUTOR.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
|
||||
c.onInitialBindComplete(currentScreenIds, pendingTasks);
|
||||
c.onInitialBindComplete(
|
||||
currentScreenIds, pendingTasks, workspaceItemCount, isBindSync);
|
||||
}, mUiExecutor);
|
||||
|
||||
mCallbacks.bindStringCache(mBgDataModel.stringCache.clone());
|
||||
@@ -361,18 +364,19 @@ public abstract class BaseLauncherBinder {
|
||||
* loaded, it will bind all workspace items immediately, and bindOtherWorkspacePages() will
|
||||
* not bind any items.
|
||||
*/
|
||||
protected void bindCurrentWorkspacePages() {
|
||||
protected void bindCurrentWorkspacePages(boolean isBindSync) {
|
||||
// Save a copy of all the bg-thread collections
|
||||
ArrayList<ItemInfo> workspaceItems;
|
||||
ArrayList<LauncherAppWidgetInfo> appWidgets;
|
||||
ArrayList<FixedContainerItems> fciList = new ArrayList<>();
|
||||
|
||||
final int workspaceItemCount;
|
||||
synchronized (mBgDataModel) {
|
||||
workspaceItems = new ArrayList<>(mBgDataModel.workspaceItems);
|
||||
appWidgets = new ArrayList<>(mBgDataModel.appWidgets);
|
||||
if (!FeatureFlags.CHANGE_MODEL_DELEGATE_LOADING_ORDER.get()) {
|
||||
mBgDataModel.extraItems.forEach(fciList::add);
|
||||
}
|
||||
workspaceItemCount = mBgDataModel.itemsIdMap.size();
|
||||
}
|
||||
|
||||
workspaceItems.forEach(it -> mBoundItemIds.add(it.id));
|
||||
@@ -395,10 +399,10 @@ public abstract class BaseLauncherBinder {
|
||||
|
||||
bindWorkspaceItems(workspaceItems);
|
||||
bindAppWidgets(appWidgets);
|
||||
|
||||
executeCallbacksTask(c -> {
|
||||
MODEL_EXECUTOR.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
|
||||
c.onInitialBindComplete(mCurrentScreenIds, new RunnableList());
|
||||
c.onInitialBindComplete(
|
||||
mCurrentScreenIds, new RunnableList(), workspaceItemCount, isBindSync);
|
||||
}, mUiExecutor);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user