public override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); RetainInstance = true; downloaders = new List<Downloader>(); mCallbacks = (TaskCallbacks)Activity; }
public async Task<bool> StartTaskByTag(string tag, TaskCallbacks callbacks) { var selectedDownloader = downloaders.SingleOrDefault(s => s.TAG.Equals(tag)); if (selectedDownloader == null) { return false; } if(selectedDownloader.IsRunning == false) { selectedDownloader.IsRunning = true; selectedDownloader.CancellationTokenSource = new CancellationTokenSource(); SetUpTask(selectedDownloader); try { selectedDownloader.Result = new List<string>(); await selectedDownloader.Task; callbacks.OnPostExecute(selectedDownloader.TAG, selectedDownloader.Result); } catch (System.OperationCanceledException) { callbacks.OnCancelled(selectedDownloader.TAG); } catch (Exception e) { callbacks.OnFailed(selectedDownloader.TAG); } finally { selectedDownloader.CancellationTokenSource = null; selectedDownloader.IsRunning = false; downloaders.Remove(downloaders.SingleOrDefault(s => s.TAG.Equals(tag))); } return true; } return false; }
public override void OnResume() { base.OnResume(); mCallbacks = (TaskCallbacks)Activity; }