mirror of
https://github.com/iSoron/uhabits.git
synced 2025-12-06 09:08:52 -06:00
Use hashmap on AndroidTaskRunner
This commit is contained in:
@@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user