diff options
author | Chuck Liao <chuckliao@google.com> | 2021-11-12 01:08:20 +0800 |
---|---|---|
committer | Chuck Liao <chuckliao@google.com> | 2021-11-12 01:08:20 +0800 |
commit | b466edaeaee342c641eaac43f04e3ec8b4f94d0e (patch) | |
tree | 5eab27889e6617db76ecef0b0e61c4ed50e965a7 /src/com/android/customization/model/grid/GridOptionsManager.java | |
parent | 2f5266346fab0ce95ae0c7984d418fd9b241530f (diff) | |
download | ThemePicker-b466edaeaee342c641eaac43f04e3ec8b4f94d0e.tar.gz |
Retire AsyncTask in GridOptionsManager
Replace AsyncTask with Executors
Bug: 198711500
Test: manual
Change-Id: I2c16b976cf747140689b0d4b7ac57e6d4e9e9d01
Diffstat (limited to 'src/com/android/customization/model/grid/GridOptionsManager.java')
-rw-r--r-- | src/com/android/customization/model/grid/GridOptionsManager.java | 59 |
1 files changed, 18 insertions, 41 deletions
diff --git a/src/com/android/customization/model/grid/GridOptionsManager.java b/src/com/android/customization/model/grid/GridOptionsManager.java index da1139ee..f16d1d0d 100644 --- a/src/com/android/customization/model/grid/GridOptionsManager.java +++ b/src/com/android/customization/model/grid/GridOptionsManager.java @@ -16,11 +16,10 @@ package com.android.customization.model.grid; import android.content.Context; -import android.os.AsyncTask; import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import com.android.customization.model.CustomizationManager; @@ -31,12 +30,16 @@ import com.android.wallpaper.module.InjectorProvider; import com.android.wallpaper.util.PreviewUtils; import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; /** * {@link CustomizationManager} for interfacing with the launcher to handle {@link GridOption}s. */ public class GridOptionsManager implements CustomizationManager<GridOption> { + private static final ExecutorService sExecutorService = Executors.newSingleThreadExecutor(); + private static GridOptionsManager sGridOptionsManager; private final LauncherGridOptionsProvider mProvider; @@ -81,7 +84,18 @@ public class GridOptionsManager implements CustomizationManager<GridOption> { @Override public void fetchOptions(OptionsFetchedListener<GridOption> callback, boolean reload) { - new FetchTask(mProvider, callback, reload).execute(); + sExecutorService.submit(() -> { + List<GridOption> gridOptions = mProvider.fetch(reload); + new Handler(Looper.getMainLooper()).post(() -> { + if (callback != null) { + if (gridOptions != null && !gridOptions.isEmpty()) { + callback.onOptionsLoaded(gridOptions); + } else { + callback.onError(null); + } + } + }); + }); } /** Call through content provider API to render preview */ @@ -89,41 +103,4 @@ public class GridOptionsManager implements CustomizationManager<GridOption> { PreviewUtils.WorkspacePreviewCallback callback) { mProvider.renderPreview(gridName, bundle, callback); } - - private static class FetchTask extends AsyncTask<Void, Void, List<GridOption>> { - private final LauncherGridOptionsProvider mProvider; - @Nullable private final OptionsFetchedListener<GridOption> mCallback; - private final boolean mReload; - - private FetchTask(@NonNull LauncherGridOptionsProvider provider, - @Nullable OptionsFetchedListener<GridOption> callback, boolean reload) { - mCallback = callback; - mProvider = provider; - mReload = reload; - } - - @Override - protected List<GridOption> doInBackground(Void[] params) { - return mProvider.fetch(mReload); - } - - @Override - protected void onPostExecute(List<GridOption> gridOptions) { - if (mCallback != null) { - if (gridOptions != null && !gridOptions.isEmpty()) { - mCallback.onOptionsLoaded(gridOptions); - } else { - mCallback.onError(null); - } - } - } - - @Override - protected void onCancelled() { - super.onCancelled(); - if (mCallback != null) { - mCallback.onError(null); - } - } - } } |