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

Commit 6e1f150c authored by Rajeev Kumar's avatar Rajeev Kumar Committed by Android (Google) Code Review
Browse files

Merge "Make AsyncTask static to prevent memory leak in WorkModeSwitch class"...

Merge "Make AsyncTask static to prevent memory leak in WorkModeSwitch class" into ub-launcher3-master
parents 589f53cf 88a2391f
Loading
Loading
Loading
Loading
+45 −21
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.widget.Switch;

import com.android.launcher3.compat.UserManagerCompat;

import java.lang.ref.WeakReference;
import java.util.List;

public class WorkModeSwitch extends Switch {
@@ -61,17 +62,38 @@ public class WorkModeSwitch extends Switch {
    }

    private void trySetQuietModeEnabledToAllProfilesAsync(boolean enabled) {
        new AsyncTask<Void, Void, Boolean>() {
        new SetQuietModeEnabledAsyncTask(enabled, new WeakReference<>(this)).execute();
    }

    private static final class SetQuietModeEnabledAsyncTask
            extends AsyncTask<Void, Void, Boolean> {

        private final boolean enabled;
        private final WeakReference<WorkModeSwitch> switchWeakReference;

        SetQuietModeEnabledAsyncTask(boolean enabled,
                                     WeakReference<WorkModeSwitch> switchWeakReference) {
            this.enabled = enabled;
            this.switchWeakReference = switchWeakReference;
        }

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
                setEnabled(false);
            WorkModeSwitch workModeSwitch = switchWeakReference.get();
            if (workModeSwitch != null) {
                workModeSwitch.setEnabled(false);
            }
        }

        @Override
        protected Boolean doInBackground(Void... voids) {
                UserManagerCompat userManager = UserManagerCompat.getInstance(getContext());
            WorkModeSwitch workModeSwitch = switchWeakReference.get();
            if (workModeSwitch == null) {
                return false;
            }
            UserManagerCompat userManager =
                    UserManagerCompat.getInstance(workModeSwitch.getContext());
            List<UserHandle> userProfiles = userManager.getUserProfiles();
            boolean showConfirm = false;
            for (UserHandle userProfile : userProfiles) {
@@ -86,9 +108,11 @@ public class WorkModeSwitch extends Switch {
        @Override
        protected void onPostExecute(Boolean showConfirm) {
            if (showConfirm) {
                    setEnabled(true);
                WorkModeSwitch workModeSwitch = switchWeakReference.get();
                if (workModeSwitch != null) {
                    workModeSwitch.setEnabled(true);
                }
            }
        }
        }.execute();
    }
}