The AsyncTask API is deprecated in Android 11. How to modify this code? I was reading about AsyncTask, and I tried the simple program below. But it does not seem to work. How can I make it work?
Please modify this code
public class EntryActivity extends BaseActivity {
private LoadListAsyncTask loadListAsyncTask;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
loadListAsyncTask = new LoadListAsyncTask(this);
loadListAsyncTask.execute();
}
@Override
protected void onDestroy() {
super.onDestroy();
if (loadListAsyncTask != null && !loadListAsyncTask.isCancelled()) {
loadListAsyncTask.cancel(true);
}
}
static class LoadListAsyncTask extends AsyncTask<Void, Void, Pair<String, ArrayList<StickerPack>>> {
private final WeakReference<EntryActivity> contextWeakReference;
LoadListAsyncTask(EntryActivity activity) {
this.contextWeakReference = new WeakReference<>(activity);
}
@Override
protected Pair<String, ArrayList<StickerPack>> doInBackground(Void... voids) {
ArrayList<StickerPack> stickerPackList;
try {
final Context context = contextWeakReference.get();
if (context != null) {
stickerPackList = StickerPackLoader.fetchStickerPacks(context);
if (stickerPackList.size() == 0) {
return new Pair<>("could not find any packs", null);
}
for (StickerPack stickerPack : stickerPackList) {
StickerPackValidator.verifyStickerPackValidity(context, stickerPack);
}
return new Pair<>(null, stickerPackList);
} else {
return new Pair<>("could not fetch sticker packs", null);
}
} catch (Exception e) {
Log.e("EntryActivity", "error fetching sticker packs", e);
return new Pair<>(e.getMessage(), null);
}
}
@Override
protected void onPostExecute(Pair<String, ArrayList<StickerPack>> stringListPair) {
final EntryActivity entryActivity = contextWeakReference.get();
if (entryActivity != null) {
if (stringListPair.first != null) {
entryActivity.showErrorMessage(stringListPair.first);
} else {
entryActivity.showStickerPack(stringListPair.second);
}
}
}
}