From 3a7f27755c9e3973055c94989957eb29a85b4038 Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Fri, 29 Jul 2016 07:06:49 -0400 Subject: [PATCH] Use hashmap on AndroidTaskRunner --- .../org/isoron/uhabits/tasks/AndroidTaskRunner.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/isoron/uhabits/tasks/AndroidTaskRunner.java b/app/src/main/java/org/isoron/uhabits/tasks/AndroidTaskRunner.java index ed7189967..41ed2f074 100644 --- a/app/src/main/java/org/isoron/uhabits/tasks/AndroidTaskRunner.java +++ b/app/src/main/java/org/isoron/uhabits/tasks/AndroidTaskRunner.java @@ -33,9 +33,12 @@ public class AndroidTaskRunner implements TaskRunner { private final LinkedList activeTasks; + private final HashMap taskToAsyncTask; + public AndroidTaskRunner() { activeTasks = new LinkedList<>(); + taskToAsyncTask = new HashMap<>(); } @Provides @@ -54,8 +57,9 @@ public class AndroidTaskRunner implements TaskRunner @Override public void publishProgress(Task task, int progress) { - for (CustomAsyncTask asyncTask : activeTasks) - if (asyncTask.getTask() == task) asyncTask.publish(progress); + CustomAsyncTask asyncTask = taskToAsyncTask.get(task); + if(asyncTask == null) return; + asyncTask.publish(progress); } private class CustomAsyncTask extends AsyncTask @@ -89,12 +93,14 @@ public class AndroidTaskRunner implements TaskRunner { task.onPostExecute(); activeTasks.remove(this); + taskToAsyncTask.remove(task); } @Override protected void onPreExecute() { activeTasks.add(this); + taskToAsyncTask.put(task, this); task.onPreExecute(); }