public override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); RetainInstance = true; _movieDownloaders = new List<GenericDownloader<List<Movie>>>(); _trakkedMoviesDownloaders = new List<GenericDownloader<List<string>>>(); _callbacks = (GenericTaskFragmentCallbacks<List<Movie>>) Activity; }
public async Task<bool> StartMovieDownloaderByUrl(string url, GenericTaskFragmentCallbacks<List<Movie>> callbacks) { var selectedDownloader = _movieDownloaders.SingleOrDefault(s => s.Url.Equals(url)); if (selectedDownloader == null) { return false; } if (!selectedDownloader.IsRunning) { selectedDownloader.IsRunning = true; try { callbacks.OnPostExecute(selectedDownloader.TAG, await selectedDownloader.Task); } catch (System.OperationCanceledException) { callbacks.OnCancelled(selectedDownloader.TAG); } catch (Exception e) { callbacks.OnFailed(selectedDownloader.TAG); } finally { selectedDownloader.CancellationTokenSource = null; selectedDownloader.IsRunning = false; _movieDownloaders.Remove(_movieDownloaders.SingleOrDefault(s => s.Url.Equals(url))); } return true; } return false; }
public override void OnResume() { base.OnResume(); _callbacks = (GenericTaskFragmentCallbacks<List<Movie>>) Activity; }