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

Commit 50d9224a authored by Chaohui Wang's avatar Chaohui Wang
Browse files

Fix flicker for Device admin apps.

Security ->Advanced settings-> Device admin apps

updateState() is called in DashboardFragment.onResume(), which after the view is visible to the user.

Rendering the items in updateState() caused the flicker.

Bug: 225283414
Test: On Pixel device
Change-Id: I7175c966fbbfbf5d6331f5ac26c06b60d59a4e0d
parent 3b1a9086
Loading
Loading
Loading
Loading
+2 −15
Original line number Diff line number Diff line
@@ -37,7 +37,6 @@ import android.os.UserManager;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.Log;
import android.util.SparseArray;

import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
@@ -79,7 +78,6 @@ public class DeviceAdminListPreferenceController extends BasePreferenceControlle
     * user.
     */
    private final ArrayList<DeviceAdminListItem> mAdmins = new ArrayList<>();
    private final SparseArray<ComponentName> mProfileOwnerComponents = new SparseArray<>();

    private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
        @Override
@@ -118,6 +116,8 @@ public class DeviceAdminListPreferenceController extends BasePreferenceControlle
        super.displayPreference(screen);
        mPreferenceGroup = screen.findPreference(getPreferenceKey());
        mFooterPreference = mPreferenceGroup.findPreference(KEY_DEVICE_ADMIN_FOOTER);

        updateList();
    }

    @Override
@@ -127,19 +127,6 @@ public class DeviceAdminListPreferenceController extends BasePreferenceControlle
                null /* broadcastPermission */, null /* scheduler */);
    }

    @Override
    public void updateState(Preference preference) {
        super.updateState(preference);
        mProfileOwnerComponents.clear();
        final List<UserHandle> profiles = mUm.getUserProfiles();
        final int profilesSize = profiles.size();
        for (int i = 0; i < profilesSize; ++i) {
            final int profileId = profiles.get(i).getIdentifier();
            mProfileOwnerComponents.put(profileId, mDPM.getProfileOwnerAsUser(profileId));
        }
        updateList();
    }

    @Override
    public void onStop() {
        mContext.unregisterReceiver(mBroadcastReceiver);