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;
 }