Monitor the page scrolling jank for app list pages

Bug: 254237663
Test: take the trace and check the cuj section name
Change-Id: Id9b7affcad354c43c1e8934d81abd1bb51fb2956
This commit is contained in:
Yanting Yang
2022-10-18 20:13:35 +00:00
parent f6908a2221
commit 9f6c5bdadc
2 changed files with 22 additions and 3 deletions

View File

@@ -19,6 +19,7 @@ package com.android.settings.applications.manageapplications;
import static androidx.recyclerview.widget.RecyclerView.SCROLL_STATE_DRAGGING;
import static androidx.recyclerview.widget.RecyclerView.SCROLL_STATE_IDLE;
import static com.android.internal.jank.InteractionJankMonitor.CUJ_SETTINGS_PAGE_SCROLL;
import static com.android.settings.ChangeIds.CHANGE_RESTRICT_SAW_INTENT;
import static com.android.settings.applications.manageapplications.AppFilterRegistry.FILTER_APPS_ALL;
import static com.android.settings.applications.manageapplications.AppFilterRegistry.FILTER_APPS_BATTERY_OPTIMIZED;
@@ -86,6 +87,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.android.internal.compat.IPlatformCompat;
import com.android.internal.jank.InteractionJankMonitor;
import com.android.settings.R;
import com.android.settings.Settings;
import com.android.settings.Settings.GamesStorageActivity;
@@ -1196,8 +1198,10 @@ public class ManageApplications extends InstrumentedFragment
@Override
public void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
final String className =
mManageApplications.getClass().getName() + "_" + mManageApplications.mListType;
mRecyclerView = recyclerView;
mOnScrollListener = new OnScrollListener(this);
mOnScrollListener = new OnScrollListener(this, className);
mRecyclerView.addOnScrollListener(mOnScrollListener);
}
@@ -1757,11 +1761,15 @@ public class ManageApplications extends InstrumentedFragment
private boolean mDelayNotifyDataChange;
private ApplicationsAdapter mAdapter;
private InputMethodManager mInputMethodManager;
private InteractionJankMonitor mMonitor;
private String mClassName;
public OnScrollListener(ApplicationsAdapter adapter) {
public OnScrollListener(ApplicationsAdapter adapter, String className) {
mAdapter = adapter;
mInputMethodManager = mAdapter.mContext.getSystemService(
InputMethodManager.class);
mMonitor = InteractionJankMonitor.getInstance();
mClassName = className;
}
@Override
@@ -1776,6 +1784,15 @@ public class ManageApplications extends InstrumentedFragment
mInputMethodManager.hideSoftInputFromWindow(recyclerView.getWindowToken(),
0);
}
// Start jank monitoring during page scrolling.
final InteractionJankMonitor.Configuration.Builder builder =
InteractionJankMonitor.Configuration.Builder.withView(
CUJ_SETTINGS_PAGE_SCROLL, recyclerView)
.setTag(mClassName);
mMonitor.begin(builder);
} else if (mScrollState == SCROLL_STATE_IDLE) {
// Stop jank monitoring on page scrolling.
mMonitor.end(CUJ_SETTINGS_PAGE_SCROLL);
}
}