Merge "Remove LoadThumbnailTask to avoid using AsyncTask"
diff --git a/src/com/android/customization/model/grid/GridOptionsManager.java b/src/com/android/customization/model/grid/GridOptionsManager.java
index da1139e..f16d1d0 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.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 @@
@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 @@
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);
- }
- }
- }
}