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

Commit f8b2180b authored by Jason Monk's avatar Jason Monk
Browse files

Settings dashboard performance work

 - Don't block main thread with rebuild work
 - Don't run rebuild as foreground priority
 - Don't use comparator on apps/notifications summaries, we don't
   care about order
 - Simplify dashboard item layout

Change-Id: I33bdd06a234ea308b44b45cac5ed1e9eac1c7d43
Fixes: 26541310
parent 2f99770c
Loading
Loading
Loading
Loading
+30 −47
Original line number Original line Diff line number Diff line
@@ -33,20 +33,9 @@


    <LinearLayout
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_width="match_parent"
            android:layout_height="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        android:orientation="vertical">


        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dip"
            android:orientation="vertical"
            android:gravity="center_vertical"
            android:layout_weight="1">

            <RelativeLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content">

        <TextView android:id="@android:id/title"
        <TextView android:id="@android:id/title"
            android:layout_width="wrap_content"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_height="wrap_content"
@@ -58,15 +47,9 @@
        <TextView android:id="@android:id/summary"
        <TextView android:id="@android:id/summary"
            android:layout_width="wrap_content"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_height="wrap_content"
                          android:layout_below="@android:id/title"
                          android:layout_alignStart="@android:id/title"
            android:textAppearance="@style/TextAppearance.Small"
            android:textAppearance="@style/TextAppearance.Small"
            android:textColor="?android:attr/textColorSecondary" />
            android:textColor="?android:attr/textColorSecondary" />


            </RelativeLayout>

        </LinearLayout>

    </LinearLayout>
    </LinearLayout>


</LinearLayout>
</LinearLayout>
+16 −10
Original line number Original line Diff line number Diff line
@@ -23,10 +23,7 @@ import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager;
import android.icu.text.AlphabeticIndex;
import android.icu.text.AlphabeticIndex;
import android.os.Bundle;
import android.os.*;
import android.os.Environment;
import android.os.UserHandle;
import android.os.UserManager;
import android.preference.PreferenceFrameLayout;
import android.preference.PreferenceFrameLayout;
import android.text.TextUtils;
import android.text.TextUtils;
import android.util.ArraySet;
import android.util.ArraySet;
@@ -1225,6 +1222,7 @@ public class ManageApplications extends InstrumentedFragment
        // TODO: Can probably hack together with less than full app state.
        // TODO: Can probably hack together with less than full app state.
        private final ApplicationsState mAppState;
        private final ApplicationsState mAppState;
        private final ApplicationsState.Session mSession;
        private final ApplicationsState.Session mSession;
        private final Handler mHandler;


        private SummaryProvider(Context context, SummaryLoader loader) {
        private SummaryProvider(Context context, SummaryLoader loader) {
            mContext = context;
            mContext = context;
@@ -1232,6 +1230,7 @@ public class ManageApplications extends InstrumentedFragment
            mAppState =
            mAppState =
                    ApplicationsState.getInstance((Application) context.getApplicationContext());
                    ApplicationsState.getInstance((Application) context.getApplicationContext());
            mSession = mAppState.newSession(this);
            mSession = mAppState.newSession(this);
            mHandler = new Handler(mAppState.getBackgroundLooper());
        }
        }


        @Override
        @Override
@@ -1248,6 +1247,16 @@ public class ManageApplications extends InstrumentedFragment
            mLoader.setSummary(this, mContext.getString(R.string.apps_summary, apps.size()));
            mLoader.setSummary(this, mContext.getString(R.string.apps_summary, apps.size()));
        }
        }


        private void postRebuild() {
            mHandler.post(new Runnable() {
                @Override
                public void run() {
                    updateSummary(mSession.rebuild(ApplicationsState.FILTER_DOWNLOADED_AND_LAUNCHER,
                            null, false));
                }
            });
        }

        @Override
        @Override
        public void onRebuildComplete(ArrayList<AppEntry> apps) {
        public void onRebuildComplete(ArrayList<AppEntry> apps) {
            updateSummary(apps);
            updateSummary(apps);
@@ -1255,20 +1264,17 @@ public class ManageApplications extends InstrumentedFragment


        @Override
        @Override
        public void onPackageListChanged() {
        public void onPackageListChanged() {
            updateSummary(mSession.rebuild(ApplicationsState.FILTER_DOWNLOADED_AND_LAUNCHER,
            postRebuild();
                    ApplicationsState.ALPHA_COMPARATOR));
        }
        }


        @Override
        @Override
        public void onLauncherInfoChanged() {
        public void onLauncherInfoChanged() {
            updateSummary(mSession.rebuild(ApplicationsState.FILTER_DOWNLOADED_AND_LAUNCHER,
            postRebuild();
                    ApplicationsState.ALPHA_COMPARATOR));
        }
        }


        @Override
        @Override
        public void onLoadEntriesCompleted() {
        public void onLoadEntriesCompleted() {
            updateSummary(mSession.rebuild(ApplicationsState.FILTER_DOWNLOADED_AND_LAUNCHER,
            postRebuild();
                    ApplicationsState.ALPHA_COMPARATOR));
        }
        }


        @Override
        @Override
+11 −3
Original line number Original line Diff line number Diff line
@@ -17,6 +17,7 @@ package com.android.settings.applications;
import android.app.Activity;
import android.app.Activity;
import android.app.Application;
import android.app.Application;
import android.content.Context;
import android.content.Context;
import android.os.Handler;
import com.android.settings.R;
import com.android.settings.R;
import com.android.settings.applications.AppStateBaseBridge.Callback;
import com.android.settings.applications.AppStateBaseBridge.Callback;
import com.android.settings.dashboard.SummaryLoader;
import com.android.settings.dashboard.SummaryLoader;
@@ -44,6 +45,7 @@ public class NotificationApps extends ManageApplications {
        private final ApplicationsState.Session mSession;
        private final ApplicationsState.Session mSession;
        private final NotificationBackend mNotifBackend;
        private final NotificationBackend mNotifBackend;
        private final AppStateNotificationBridge mExtraInfoBridge;
        private final AppStateNotificationBridge mExtraInfoBridge;
        private final Handler mHandler;


        private SummaryProvider(Context context, SummaryLoader loader) {
        private SummaryProvider(Context context, SummaryLoader loader) {
            mContext = context;
            mContext = context;
@@ -54,6 +56,7 @@ public class NotificationApps extends ManageApplications {
            mNotifBackend = new NotificationBackend();
            mNotifBackend = new NotificationBackend();
            mExtraInfoBridge = new AppStateNotificationBridge(mContext,
            mExtraInfoBridge = new AppStateNotificationBridge(mContext,
                    mAppState, this, mNotifBackend);
                    mAppState, this, mNotifBackend);
            mHandler = new Handler(mAppState.getBackgroundLooper());
        }
        }


        @Override
        @Override
@@ -84,9 +87,14 @@ public class NotificationApps extends ManageApplications {


        @Override
        @Override
        public void onExtraInfoUpdated() {
        public void onExtraInfoUpdated() {
            mHandler.post(new Runnable() {
                @Override
                public void run() {
                    updateSummary(mSession.rebuild(
                    updateSummary(mSession.rebuild(
                            AppStateNotificationBridge.FILTER_APP_NOTIFICATION_BLOCKED,
                            AppStateNotificationBridge.FILTER_APP_NOTIFICATION_BLOCKED,
                    ApplicationsState.ALPHA_COMPARATOR));
                            null, false));
                }
            });
        }
        }


        @Override
        @Override