Use hashmap on AndroidTaskRunner

pull/151/head
Alinson S. Xavier 9 years ago
parent 3a3be664f7
commit 3a7f27755c

@ -33,9 +33,12 @@ public class AndroidTaskRunner implements TaskRunner
{ {
private final LinkedList<CustomAsyncTask> activeTasks; private final LinkedList<CustomAsyncTask> activeTasks;
private final HashMap<Task, CustomAsyncTask> taskToAsyncTask;
public AndroidTaskRunner() public AndroidTaskRunner()
{ {
activeTasks = new LinkedList<>(); activeTasks = new LinkedList<>();
taskToAsyncTask = new HashMap<>();
} }
@Provides @Provides
@ -54,8 +57,9 @@ public class AndroidTaskRunner implements TaskRunner
@Override @Override
public void publishProgress(Task task, int progress) public void publishProgress(Task task, int progress)
{ {
for (CustomAsyncTask asyncTask : activeTasks) CustomAsyncTask asyncTask = taskToAsyncTask.get(task);
if (asyncTask.getTask() == task) asyncTask.publish(progress); if(asyncTask == null) return;
asyncTask.publish(progress);
} }
private class CustomAsyncTask extends AsyncTask<Void, Integer, Void> private class CustomAsyncTask extends AsyncTask<Void, Integer, Void>
@ -89,12 +93,14 @@ public class AndroidTaskRunner implements TaskRunner
{ {
task.onPostExecute(); task.onPostExecute();
activeTasks.remove(this); activeTasks.remove(this);
taskToAsyncTask.remove(task);
} }
@Override @Override
protected void onPreExecute() protected void onPreExecute()
{ {
activeTasks.add(this); activeTasks.add(this);
taskToAsyncTask.put(task, this);
task.onPreExecute(); task.onPreExecute();
} }

Loading…
Cancel
Save