diff options
author | ByteHamster <info@bytehamster.com> | 2021-02-26 11:22:14 +0100 |
---|---|---|
committer | ByteHamster <info@bytehamster.com> | 2021-02-26 11:22:14 +0100 |
commit | 6eb0ac559653fc6aa6c49bcc89c57be768e6b41a (patch) | |
tree | fdf6b90720487b3ececa8e579c8c2cd57ba1b347 /app/src | |
parent | fb45ceffa628c05ffa58773048481c5ceeda2751 (diff) | |
download | AntennaPod-6eb0ac559653fc6aa6c49bcc89c57be768e6b41a.zip |
Removed AsyncTask from PodcastListFragment
Diffstat (limited to 'app/src')
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/PodcastListFragment.java | 102 |
1 files changed, 44 insertions, 58 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/PodcastListFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/PodcastListFragment.java index be9699348..7ee0936d0 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/PodcastListFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/PodcastListFragment.java @@ -1,10 +1,7 @@ package de.danoeh.antennapod.fragment.gpodnet; -import android.content.Context; import android.content.Intent; -import android.os.AsyncTask; import android.os.Bundle; -import androidx.fragment.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -13,9 +10,7 @@ import android.widget.Button; import android.widget.GridView; import android.widget.ProgressBar; import android.widget.TextView; - -import java.util.List; - +import androidx.fragment.app.Fragment; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; import de.danoeh.antennapod.activity.OnlineFeedViewActivity; @@ -25,6 +20,12 @@ import de.danoeh.antennapod.core.service.download.AntennapodHttpClient; import de.danoeh.antennapod.core.sync.gpoddernet.GpodnetService; import de.danoeh.antennapod.core.sync.gpoddernet.GpodnetServiceException; import de.danoeh.antennapod.core.sync.gpoddernet.model.GpodnetPodcast; +import io.reactivex.Observable; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; +import io.reactivex.schedulers.Schedulers; + +import java.util.List; /** * Displays a list of GPodnetPodcast-Objects in a GridView @@ -36,6 +37,7 @@ public abstract class PodcastListFragment extends Fragment { private ProgressBar progressBar; private TextView txtvError; private Button butRetry; + private Disposable disposable; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -64,60 +66,44 @@ public abstract class PodcastListFragment extends Fragment { protected abstract List<GpodnetPodcast> loadPodcastData(GpodnetService service) throws GpodnetServiceException; final void loadData() { - AsyncTask<Void, Void, List<GpodnetPodcast>> loaderTask = new AsyncTask<Void, Void, List<GpodnetPodcast>>() { - volatile Exception exception = null; - - @Override - protected List<GpodnetPodcast> doInBackground(Void... params) { - try { + if (disposable != null) { + disposable.dispose(); + } + gridView.setVisibility(View.GONE); + progressBar.setVisibility(View.VISIBLE); + txtvError.setVisibility(View.GONE); + butRetry.setVisibility(View.GONE); + disposable = Observable.fromCallable( + () -> { GpodnetService service = new GpodnetService(AntennapodHttpClient.getHttpClient(), GpodnetPreferences.getHosturl()); return loadPodcastData(service); - } catch (GpodnetServiceException e) { - exception = e; - e.printStackTrace(); - return null; - } - } - - @Override - protected void onPostExecute(List<GpodnetPodcast> gpodnetPodcasts) { - super.onPostExecute(gpodnetPodcasts); - final Context context = getActivity(); - if (context != null && gpodnetPodcasts != null && gpodnetPodcasts.size() > 0) { - PodcastListAdapter listAdapter = new PodcastListAdapter(context, 0, gpodnetPodcasts); - gridView.setAdapter(listAdapter); - listAdapter.notifyDataSetChanged(); - - progressBar.setVisibility(View.GONE); - gridView.setVisibility(View.VISIBLE); - txtvError.setVisibility(View.GONE); - butRetry.setVisibility(View.GONE); - } else if (context != null && gpodnetPodcasts != null) { - gridView.setVisibility(View.GONE); - progressBar.setVisibility(View.GONE); - txtvError.setText(getString(R.string.search_status_no_results)); - txtvError.setVisibility(View.VISIBLE); - butRetry.setVisibility(View.GONE); - } else if (context != null) { - gridView.setVisibility(View.GONE); - progressBar.setVisibility(View.GONE); - txtvError.setText(getString(R.string.error_msg_prefix) + exception.getMessage()); - txtvError.setVisibility(View.VISIBLE); - butRetry.setVisibility(View.VISIBLE); - } - } - - @Override - protected void onPreExecute() { - super.onPreExecute(); - gridView.setVisibility(View.GONE); - progressBar.setVisibility(View.VISIBLE); - txtvError.setVisibility(View.GONE); - butRetry.setVisibility(View.GONE); - } - }; - - loaderTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe( + podcasts -> { + progressBar.setVisibility(View.GONE); + butRetry.setVisibility(View.GONE); + + if (podcasts.size() > 0) { + PodcastListAdapter listAdapter = new PodcastListAdapter(getContext(), 0, podcasts); + gridView.setAdapter(listAdapter); + listAdapter.notifyDataSetChanged(); + gridView.setVisibility(View.VISIBLE); + txtvError.setVisibility(View.GONE); + } else { + gridView.setVisibility(View.GONE); + txtvError.setText(getString(R.string.search_status_no_results)); + txtvError.setVisibility(View.VISIBLE); + } + }, error -> { + gridView.setVisibility(View.GONE); + progressBar.setVisibility(View.GONE); + txtvError.setText(getString(R.string.error_msg_prefix) + error.getMessage()); + txtvError.setVisibility(View.VISIBLE); + butRetry.setVisibility(View.VISIBLE); + Log.e(TAG, Log.getStackTraceString(error)); + }); } } |