Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e073306d authored by Yohei Yukawa's avatar Yohei Yukawa
Browse files

Track update count of IMMS#mMethodMap

InputMethodManagerService#buildInputMethodListLocked() is known be
one of the biggest contributors to CPU and I/O bandwidth consumed
by InputMethodManagerService (IMMS). To check when it gets called
and to see how a CL would affect its call count, it would be useful
if we can easily get the call count of that method.

With this CL, how many times IMMS#mMethodMap was rebuilt will be
included in the dumpsys.

Test: adb shell dumpsys input_method | grep "mMethodMapUpdateCount="
      to make sure the count is increasing.
Bug: 32343335
Change-Id: I05850578cbf2e6adfea6c7e9b1fb9ec4e9d5e2c9
parent 0a54d4bb
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -227,6 +227,12 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
            new LruCache<>(SECURE_SUGGESTION_SPANS_MAX_SIZE);
    private final InputMethodSubtypeSwitchingController mSwitchingController;

    /**
     * Tracks how many times {@link #mMethodMap} was updated.
     */
    @GuardedBy("mMethodMap")
    private int mMethodMapUpdateCount = 0;

    // Used to bring IME service up to visible adjustment while it is being shown.
    final ServiceConnection mVisibleConnection = new ServiceConnection() {
        @Override public void onServiceConnected(ComponentName name, IBinder service) {
@@ -3069,6 +3075,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
        }
        mMethodList.clear();
        mMethodMap.clear();
        mMethodMapUpdateCount++;
        mMyPackageMonitor.clearPackagesToMonitorComponentChangeLocked();

        // Use for queryIntentServicesAsUser
@@ -4070,7 +4077,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
        synchronized (mMethodMap) {
            p.println("Current Input Method Manager state:");
            int N = mMethodList.size();
            p.println("  Input Methods:");
            p.println("  Input Methods: mMethodMapUpdateCount=" + mMethodMapUpdateCount);
            for (int i=0; i<N; i++) {
                InputMethodInfo info = mMethodList.get(i);
                p.println("  InputMethod #" + i + ":");