diff --git a/src/com/android/settings/accounts/AccountPreferenceBase.java b/src/com/android/settings/accounts/AccountPreferenceBase.java index 7c3b54c5f07..54ddf64eaaf 100644 --- a/src/com/android/settings/accounts/AccountPreferenceBase.java +++ b/src/com/android/settings/accounts/AccountPreferenceBase.java @@ -23,18 +23,16 @@ import android.content.Context; import android.content.SyncStatusObserver; import android.graphics.drawable.Drawable; import android.os.Bundle; -import android.os.Handler; import android.os.UserHandle; import android.os.UserManager; -import android.support.v7.preference.PreferenceScreen; import android.text.format.DateFormat; import android.util.Log; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.Utils; import com.android.settingslib.accounts.AuthenticatorHelper; +import com.android.settingslib.utils.ThreadUtils; -import java.util.ArrayList; import java.util.Date; abstract class AccountPreferenceBase extends SettingsPreferenceFragment @@ -46,8 +44,6 @@ abstract class AccountPreferenceBase extends SettingsPreferenceFragment public static final String AUTHORITIES_FILTER_KEY = "authorities"; public static final String ACCOUNT_TYPES_FILTER_KEY = "account_types"; - private final Handler mHandler = new Handler(); - private UserManager mUm; private Object mStatusChangeListenerHandle; protected AuthenticatorHelper mAuthenticatorHelper; @@ -118,29 +114,8 @@ abstract class AccountPreferenceBase extends SettingsPreferenceFragment ContentResolver.removeStatusChangeListener(mStatusChangeListenerHandle); } - private SyncStatusObserver mSyncStatusObserver = new SyncStatusObserver() { - public void onStatusChanged(int which) { - mHandler.post(new Runnable() { - public void run() { - onSyncStateUpdated(); - } - }); - } - }; - - public ArrayList getAuthoritiesForAccountType(String type) { - return mAuthenticatorHelper.getAuthoritiesForAccountType(type); - } - - /** - * Gets the preferences.xml file associated with a particular account type. - * @param accountType the type of account - * @return a PreferenceScreen inflated from accountPreferenceId. - */ - public PreferenceScreen addPreferencesForType(final String accountType, - PreferenceScreen parent) { - return mAccountTypePreferenceLoader.addPreferencesForType(accountType, parent); - } + private SyncStatusObserver mSyncStatusObserver = + which -> ThreadUtils.postOnMainThread(() -> onSyncStateUpdated()); public void updateAuthDescriptions() { mAuthenticatorHelper.updateAuthDescriptions(getActivity()); diff --git a/src/com/android/settings/applications/RunningServiceDetails.java b/src/com/android/settings/applications/RunningServiceDetails.java index 84c2ee52dd1..7e73a9b5001 100644 --- a/src/com/android/settings/applications/RunningServiceDetails.java +++ b/src/com/android/settings/applications/RunningServiceDetails.java @@ -21,7 +21,6 @@ import android.content.pm.ServiceInfo; import android.content.res.Resources; import android.os.Bundle; import android.os.Debug; -import android.os.Handler; import android.os.SystemClock; import android.os.UserHandle; import android.provider.Settings; @@ -37,6 +36,7 @@ import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.core.InstrumentedPreferenceFragment; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; +import com.android.settingslib.utils.ThreadUtils; import java.io.File; import java.io.FileInputStream; @@ -481,15 +481,12 @@ public class RunningServiceDetails extends InstrumentedPreferenceFragment addDetailViews(); } } - + private void finish() { - (new Handler()).post(new Runnable() { - @Override - public void run() { - Activity a = getActivity(); - if (a != null) { - a.onBackPressed(); - } + ThreadUtils.postOnMainThread(() -> { + final Activity a = getActivity(); + if (a != null) { + a.onBackPressed(); } }); } diff --git a/src/com/android/settings/applications/defaultapps/DefaultAutofillPicker.java b/src/com/android/settings/applications/defaultapps/DefaultAutofillPicker.java index 00dedf9ff68..97f6d4bec5e 100644 --- a/src/com/android/settings/applications/defaultapps/DefaultAutofillPicker.java +++ b/src/com/android/settings/applications/defaultapps/DefaultAutofillPicker.java @@ -27,7 +27,6 @@ import android.content.pm.ResolveInfo; import android.content.pm.ServiceInfo; import android.net.Uri; import android.os.Bundle; -import android.os.Handler; import android.provider.Settings; import android.service.autofill.AutofillService; import android.service.autofill.AutofillServiceInfo; @@ -39,6 +38,7 @@ import android.util.Log; import com.android.internal.content.PackageMonitor; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; +import com.android.settingslib.utils.ThreadUtils; import java.util.ArrayList; import java.util.List; @@ -59,7 +59,6 @@ public class DefaultAutofillPicker extends DefaultAppPickerFragment { * Set when the fragment is implementing ACTION_REQUEST_SET_AUTOFILL_SERVICE. */ private DialogInterface.OnClickListener mCancelListener; - private final Handler mHandler = new Handler(); @Override public void onCreate(Bundle savedInstanceState) { @@ -123,17 +122,17 @@ public class DefaultAutofillPicker extends DefaultAppPickerFragment { private final PackageMonitor mSettingsPackageMonitor = new PackageMonitor() { @Override public void onPackageAdded(String packageName, int uid) { - mHandler.post(() -> update()); + ThreadUtils.postOnMainThread(() -> update()); } @Override public void onPackageModified(String packageName) { - mHandler.post(() -> update()); + ThreadUtils.postOnMainThread(() -> update()); } @Override public void onPackageRemoved(String packageName, int uid) { - mHandler.post(() -> update()); + ThreadUtils.postOnMainThread(() -> update()); } }; diff --git a/src/com/android/settings/dashboard/SummaryLoader.java b/src/com/android/settings/dashboard/SummaryLoader.java index 4586a5580c1..5816bba8237 100644 --- a/src/com/android/settings/dashboard/SummaryLoader.java +++ b/src/com/android/settings/dashboard/SummaryLoader.java @@ -35,6 +35,7 @@ import com.android.settings.SettingsActivity; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.drawer.DashboardCategory; import com.android.settingslib.drawer.Tile; +import com.android.settingslib.utils.ThreadUtils; import java.lang.reflect.Field; import java.util.List; @@ -52,7 +53,6 @@ public class SummaryLoader { private final String mCategoryKey; private final Worker mWorker; - private final Handler mHandler; private final HandlerThread mWorkerThread; private SummaryConsumer mSummaryConsumer; @@ -64,7 +64,6 @@ public class SummaryLoader { mDashboardFeatureProvider = FeatureFactory.getFactory(activity) .getDashboardFeatureProvider(activity); mCategoryKey = null; - mHandler = new Handler(); mWorkerThread = new HandlerThread("SummaryLoader", Process.THREAD_PRIORITY_BACKGROUND); mWorkerThread.start(); mWorker = new Worker(mWorkerThread.getLooper()); @@ -82,7 +81,6 @@ public class SummaryLoader { mDashboardFeatureProvider = FeatureFactory.getFactory(activity) .getDashboardFeatureProvider(activity); mCategoryKey = categoryKey; - mHandler = new Handler(); mWorkerThread = new HandlerThread("SummaryLoader", Process.THREAD_PRIORITY_BACKGROUND); mWorkerThread.start(); mWorker = new Worker(mWorkerThread.getLooper()); @@ -112,25 +110,22 @@ public class SummaryLoader { public void setSummary(SummaryProvider provider, final CharSequence summary) { final ComponentName component = mSummaryProviderMap.get(provider); - mHandler.post(new Runnable() { - @Override - public void run() { + ThreadUtils.postOnMainThread(() -> { - final Tile tile = getTileFromCategory( - mDashboardFeatureProvider.getTilesForCategory(mCategoryKey), component); + final Tile tile = getTileFromCategory( + mDashboardFeatureProvider.getTilesForCategory(mCategoryKey), component); - if (tile == null) { - if (DEBUG) { - Log.d(TAG, "Can't find tile for " + component); - } - return; - } + if (tile == null) { if (DEBUG) { - Log.d(TAG, "setSummary " + tile.title + " - " + summary); + Log.d(TAG, "Can't find tile for " + component); } - - updateSummaryIfNeeded(tile, summary); + return; } + if (DEBUG) { + Log.d(TAG, "setSummary " + tile.title + " - " + summary); + } + + updateSummaryIfNeeded(tile, summary); }); } diff --git a/src/com/android/settings/dashboard/SupportFragment.java b/src/com/android/settings/dashboard/SupportFragment.java index 8a1a79b864a..fcc9f786172 100644 --- a/src/com/android/settings/dashboard/SupportFragment.java +++ b/src/com/android/settings/dashboard/SupportFragment.java @@ -27,8 +27,6 @@ import android.net.NetworkCapabilities; import android.net.NetworkInfo; import android.net.NetworkRequest; import android.os.Bundle; -import android.os.Handler; -import android.os.Looper; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; @@ -40,6 +38,7 @@ import com.android.settings.R; import com.android.settings.core.InstrumentedFragment; import com.android.settings.overlay.FeatureFactory; import com.android.settings.overlay.SupportFeatureProvider; +import com.android.settingslib.utils.ThreadUtils; /** * Fragment for support tab in SettingsGoogle. @@ -47,7 +46,6 @@ import com.android.settings.overlay.SupportFeatureProvider; public final class SupportFragment extends InstrumentedFragment implements View.OnClickListener, OnAccountsUpdateListener { - private final Handler mHandler = new Handler(Looper.getMainLooper()); private final ConnectivityManager.NetworkCallback mNetworkCallback = new ConnectivityManager.NetworkCallback() { @@ -152,12 +150,9 @@ public final class SupportFragment extends InstrumentedFragment implements View. } private void postConnectivityChanged() { - mHandler.post(new Runnable() { - @Override - public void run() { - if (mSupportItemAdapter != null) { - mSupportItemAdapter.setHasInternet(hasInternet()); - } + ThreadUtils.postOnMainThread(() -> { + if (mSupportItemAdapter != null) { + mSupportItemAdapter.setHasInternet(hasInternet()); } }); } diff --git a/src/com/android/settings/datausage/DataSaverBackend.java b/src/com/android/settings/datausage/DataSaverBackend.java index f37a3c306a1..041a81f06be 100644 --- a/src/com/android/settings/datausage/DataSaverBackend.java +++ b/src/com/android/settings/datausage/DataSaverBackend.java @@ -14,24 +14,23 @@ package com.android.settings.datausage; +import static android.net.NetworkPolicyManager.POLICY_ALLOW_METERED_BACKGROUND; +import static android.net.NetworkPolicyManager.POLICY_NONE; +import static android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND; + import android.content.Context; import android.net.INetworkPolicyListener; import android.net.NetworkPolicyManager; -import android.os.Handler; -import android.os.Looper; import android.os.RemoteException; import android.util.SparseIntArray; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.core.instrumentation.MetricsFeatureProvider; import com.android.settings.overlay.FeatureFactory; +import com.android.settingslib.utils.ThreadUtils; import java.util.ArrayList; -import static android.net.NetworkPolicyManager.POLICY_ALLOW_METERED_BACKGROUND; -import static android.net.NetworkPolicyManager.POLICY_NONE; -import static android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND; - public class DataSaverBackend { private static final String TAG = "DataSaverBackend"; @@ -39,7 +38,6 @@ public class DataSaverBackend { private final Context mContext; private final MetricsFeatureProvider mMetricsFeatureProvider; - private final Handler mHandler = new Handler(Looper.getMainLooper()); private final NetworkPolicyManager mPolicyManager; private final ArrayList mListeners = new ArrayList<>(); private SparseIntArray mUidPolicies = new SparseIntArray(); @@ -195,7 +193,7 @@ public class DataSaverBackend { @Override public void onUidPoliciesChanged(final int uid, final int uidPolicies) { - mHandler.post(() -> handleUidPoliciesChanged(uid, uidPolicies)); + ThreadUtils.postOnMainThread(() -> handleUidPoliciesChanged(uid, uidPolicies)); } @Override @@ -204,7 +202,7 @@ public class DataSaverBackend { @Override public void onRestrictBackgroundChanged(final boolean isDataSaving) throws RemoteException { - mHandler.post(() -> handleRestrictBackgroundChanged(isDataSaving)); + ThreadUtils.postOnMainThread(() -> handleRestrictBackgroundChanged(isDataSaving)); } }; diff --git a/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsListPreferenceController.java b/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsListPreferenceController.java index 03a78ead138..0927299107c 100644 --- a/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsListPreferenceController.java +++ b/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsListPreferenceController.java @@ -20,7 +20,6 @@ import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.UserInfo; -import android.os.Handler; import android.os.UserHandle; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceCategory; @@ -36,6 +35,7 @@ import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.overlay.FeatureFactory; import com.android.settings.users.UserFeatureProvider; import com.android.settingslib.core.AbstractPreferenceController; +import com.android.settingslib.utils.ThreadUtils; import java.util.ArrayList; import java.util.Collections; @@ -100,7 +100,7 @@ public class EnterpriseSetDefaultAppsListPreferenceController extends userMap.put(typeOfDefault, applicationInfos); } } - new Handler(mContext.getMainLooper()).post(() -> { updateUi(); }); + ThreadUtils.postOnMainThread(() -> updateUi()); } @Override diff --git a/src/com/android/settings/network/VpnPreferenceController.java b/src/com/android/settings/network/VpnPreferenceController.java index 763fb725fb6..95513e08624 100644 --- a/src/com/android/settings/network/VpnPreferenceController.java +++ b/src/com/android/settings/network/VpnPreferenceController.java @@ -23,8 +23,6 @@ import android.net.IConnectivityManager; import android.net.Network; import android.net.NetworkCapabilities; import android.net.NetworkRequest; -import android.os.Handler; -import android.os.Looper; import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserHandle; @@ -45,6 +43,7 @@ import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnPause; import com.android.settingslib.core.lifecycle.events.OnResume; +import com.android.settingslib.utils.ThreadUtils; import java.util.List; @@ -157,7 +156,7 @@ public class VpnPreferenceController extends AbstractPreferenceController } else { summary = getNameForVpnConfig(vpn, UserHandle.of(uid)); } - new Handler(Looper.getMainLooper()).post(() -> mPreference.setSummary(summary)); + ThreadUtils.postOnMainThread(() -> mPreference.setSummary(summary)); } private String getNameForVpnConfig(VpnConfig cfg, UserHandle user) { diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java index 8ee340aca01..5a10ebf3518 100644 --- a/src/com/android/settings/wifi/WifiConfigController.java +++ b/src/com/android/settings/wifi/WifiConfigController.java @@ -61,6 +61,7 @@ import android.widget.TextView; import com.android.settings.ProxySelector; import com.android.settings.R; import com.android.settingslib.Utils; +import com.android.settingslib.utils.ThreadUtils; import com.android.settingslib.wifi.AccessPoint; import java.net.Inet4Address; @@ -116,8 +117,6 @@ public class WifiConfigController implements TextWatcher, /* Full list of phase2 methods */ private final ArrayAdapter mPhase2FullAdapter; - private final Handler mTextViewChangedHandler; - // e.g. AccessPoint.SECURITY_NONE private int mAccessPointSecurity; private TextView mPasswordView; @@ -175,7 +174,6 @@ public class WifiConfigController implements TextWatcher, accessPoint.getSecurity(); mMode = mode; - mTextViewChangedHandler = new Handler(); mContext = mConfigUi.getContext(); final Resources res = mContext.getResources(); @@ -1258,12 +1256,10 @@ public class WifiConfigController implements TextWatcher, @Override public void afterTextChanged(Editable s) { - mTextViewChangedHandler.post(new Runnable() { - public void run() { - showWarningMessagesIfAppropriate(); - enableSubmitIfAppropriate(); - } - }); + ThreadUtils.postOnMainThread(() -> { + showWarningMessagesIfAppropriate(); + enableSubmitIfAppropriate(); + }); } @Override diff --git a/src/com/android/settings/wifi/WriteWifiConfigToNfcDialog.java b/src/com/android/settings/wifi/WriteWifiConfigToNfcDialog.java index dfed8018457..dc98e21ce9e 100644 --- a/src/com/android/settings/wifi/WriteWifiConfigToNfcDialog.java +++ b/src/com/android/settings/wifi/WriteWifiConfigToNfcDialog.java @@ -63,7 +63,6 @@ class WriteWifiConfigToNfcDialog extends AlertDialog private View mView; private Button mSubmitButton; private Button mCancelButton; - private Handler mOnTextChangedHandler; private TextView mPasswordView; private TextView mLabelView; private CheckBox mPasswordCheckBox; @@ -79,7 +78,6 @@ class WriteWifiConfigToNfcDialog extends AlertDialog mContext = context; mWakeLock = ((PowerManager) context.getSystemService(Context.POWER_SERVICE)) .newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "WriteWifiConfigToNfcDialog:wakeLock"); - mOnTextChangedHandler = new Handler(); mSecurity = security; mWifiManager = wifiManager; } @@ -90,7 +88,6 @@ class WriteWifiConfigToNfcDialog extends AlertDialog mContext = context; mWakeLock = ((PowerManager) context.getSystemService(Context.POWER_SERVICE)) .newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "WriteWifiConfigToNfcDialog:wakeLock"); - mOnTextChangedHandler = new Handler(); mSecurity = savedState.getInt(SECURITY); mWifiManager = wifiManager; } @@ -226,12 +223,7 @@ class WriteWifiConfigToNfcDialog extends AlertDialog @Override public void onTextChanged(CharSequence s, int start, int before, int count) { - mOnTextChangedHandler.post(new Runnable() { - @Override - public void run() { - enableSubmitIfAppropriate(); - } - }); + enableSubmitIfAppropriate(); } private void enableSubmitIfAppropriate() {