summaryrefslogtreecommitdiff
path: root/src/com/android
diff options
context:
space:
mode:
authorChuck Liao <chuckliao@google.com>2021-11-17 01:10:34 +0800
committerChuck Liao <chuckliao@google.com>2022-02-11 14:58:03 +0800
commitc51848b6bc578ce9c4fbdaa6fad90d131be450dd (patch)
tree7c3973e7ba23605bc3432e360f6403117bcd3d27 /src/com/android
parent2f5266346fab0ce95ae0c7984d418fd9b241530f (diff)
downloadThemePicker-c51848b6bc578ce9c4fbdaa6fad90d131be450dd.tar.gz
Retire ClocksFetchTask to avoid using AsyncTask
Replace ClocksFetchTask with Executors Bug: 198711500 Test: manual Change-Id: I6495efbd9b690fcd6284b3842a979ce843eceb10
Diffstat (limited to 'src/com/android')
-rw-r--r--src/com/android/customization/model/clock/ContentProviderClockProvider.java76
1 files changed, 28 insertions, 48 deletions
diff --git a/src/com/android/customization/model/clock/ContentProviderClockProvider.java b/src/com/android/customization/model/clock/ContentProviderClockProvider.java
index 8f4c0312..f0df031c 100644
--- a/src/com/android/customization/model/clock/ContentProviderClockProvider.java
+++ b/src/com/android/customization/model/clock/ContentProviderClockProvider.java
@@ -8,8 +8,10 @@ import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ProviderInfo;
import android.database.Cursor;
import android.net.Uri;
-import android.os.AsyncTask;
+import android.os.Handler;
+import android.os.Looper;
import android.text.TextUtils;
+import android.util.Log;
import com.android.customization.model.CustomizationManager.OptionsFetchedListener;
import com.android.customization.model.clock.Clockface.Builder;
@@ -21,9 +23,19 @@ import com.bumptech.glide.request.RequestOptions;
import java.util.ArrayList;
import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
public class ContentProviderClockProvider implements ClockProvider {
+ private static final String TAG = "ContentProviderClockProvider";
+ private static final ExecutorService sExecutorService = Executors.newSingleThreadExecutor();
+ private static final String LIST_OPTIONS = "list_options";
+ private static final String COL_TITLE = "title";
+ private static final String COL_ID = "id";
+ private static final String COL_THUMBNAIL = "thumbnail";
+ private static final String COL_PREVIEW = "preview";
+
private final Context mContext;
private final ProviderInfo mProviderInfo;
private List<Clockface> mClocks;
@@ -75,42 +87,7 @@ public class ContentProviderClockProvider implements ClockProvider {
}
return;
}
- new ClocksFetchTask(mContext, mProviderInfo, options -> {
- mClocks = options;
- if (callback != null) {
- if (!mClocks.isEmpty()) {
- callback.onOptionsLoaded(mClocks);
- } else {
- callback.onError(null);
- }
- }
- }).execute();
- }
-
- private static class ClocksFetchTask extends AsyncTask<Void, Void, List<Clockface>> {
-
- private static final String LIST_OPTIONS = "list_options";
-
- private static final String COL_NAME = "name";
- private static final String COL_TITLE = "title";
- private static final String COL_ID = "id";
- private static final String COL_THUMBNAIL = "thumbnail";
- private static final String COL_PREVIEW = "preview";
-
- private final OptionsFetchedListener<Clockface> mCallback;
- private Context mContext;
- private final ProviderInfo mProviderInfo;
-
- public ClocksFetchTask(Context context, ProviderInfo providerInfo,
- OptionsFetchedListener<Clockface> callback) {
- super();
- mContext = context;
- mProviderInfo = providerInfo;
- mCallback = callback;
- }
-
- @Override
- protected List<Clockface> doInBackground(Void... voids) {
+ sExecutorService.submit(() -> {
Uri optionsUri = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(mProviderInfo.authority)
@@ -121,7 +98,7 @@ public class ContentProviderClockProvider implements ClockProvider {
List<Clockface> clockfaces = new ArrayList<>();
try (Cursor c = resolver.query(optionsUri, null, null, null, null)) {
- while(c.moveToNext()) {
+ while (c != null && c.moveToNext()) {
String id = c.getString(c.getColumnIndex(COL_ID));
String title = c.getString(c.getColumnIndex(COL_TITLE));
String thumbnailUri = c.getString(c.getColumnIndex(COL_THUMBNAIL));
@@ -140,16 +117,19 @@ public class ContentProviderClockProvider implements ClockProvider {
Glide.get(mContext).clearDiskCache();
} catch (Exception e) {
clockfaces = null;
- } finally {
- mContext = null;
+ Log.e(TAG, "Failed to query clock face options.", e);
}
- return clockfaces;
- }
-
- @Override
- protected void onPostExecute(List<Clockface> clockfaces) {
- super.onPostExecute(clockfaces);
- mCallback.onOptionsLoaded(clockfaces);
- }
+ final List<Clockface> clockfaceList = clockfaces;
+ new Handler(Looper.getMainLooper()).post(() -> {
+ mClocks = clockfaceList;
+ if (callback != null) {
+ if (!mClocks.isEmpty()) {
+ callback.onOptionsLoaded(mClocks);
+ } else {
+ callback.onError(null);
+ }
+ }
+ });
+ });
}
}