From 8eb9f398d5215472220397fe65490950d31ffbfa Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Sat, 3 Sep 2016 09:00:20 -0400 Subject: [PATCH] Allow multiple AsyncTasks to run concurrently Fixes #134 --- .../main/java/org/isoron/uhabits/models/CheckmarkList.java | 2 +- app/src/main/java/org/isoron/uhabits/models/ScoreList.java | 2 +- app/src/main/java/org/isoron/uhabits/models/StreakList.java | 2 +- .../main/java/org/isoron/uhabits/tasks/AndroidTaskRunner.java | 4 +++- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/isoron/uhabits/models/CheckmarkList.java b/app/src/main/java/org/isoron/uhabits/models/CheckmarkList.java index 500aba268..318bddc24 100644 --- a/app/src/main/java/org/isoron/uhabits/models/CheckmarkList.java +++ b/app/src/main/java/org/isoron/uhabits/models/CheckmarkList.java @@ -179,7 +179,7 @@ public abstract class CheckmarkList * @param from timestamp for the beginning of the interval * @param to timestamp for the end of the interval */ - protected final void compute(long from, final long to) + protected final synchronized void compute(long from, final long to) { final long day = DateUtils.millisecondsInOneDay; diff --git a/app/src/main/java/org/isoron/uhabits/models/ScoreList.java b/app/src/main/java/org/isoron/uhabits/models/ScoreList.java index d3f5da046..a756bdc92 100644 --- a/app/src/main/java/org/isoron/uhabits/models/ScoreList.java +++ b/app/src/main/java/org/isoron/uhabits/models/ScoreList.java @@ -154,7 +154,7 @@ public abstract class ScoreList implements Iterable * @param from timestamp of the beginning of the interval * @param to timestamp of the end of the time interval */ - protected void compute(long from, long to) + protected synchronized void compute(long from, long to) { final long day = DateUtils.millisecondsInOneDay; final double freq = habit.getFrequency().toDouble(); diff --git a/app/src/main/java/org/isoron/uhabits/models/StreakList.java b/app/src/main/java/org/isoron/uhabits/models/StreakList.java index 4ae6a2b55..1176aa71c 100644 --- a/app/src/main/java/org/isoron/uhabits/models/StreakList.java +++ b/app/src/main/java/org/isoron/uhabits/models/StreakList.java @@ -65,7 +65,7 @@ public abstract class StreakList public abstract void invalidateNewerThan(long timestamp); - public void rebuild() + public synchronized void rebuild() { long today = DateUtils.getStartOfToday(); 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 e1626fe34..6be0d732b 100644 --- a/app/src/main/java/org/isoron/uhabits/tasks/AndroidTaskRunner.java +++ b/app/src/main/java/org/isoron/uhabits/tasks/AndroidTaskRunner.java @@ -27,6 +27,8 @@ import java.util.*; import dagger.*; +import static android.os.AsyncTask.*; + @Module public class AndroidTaskRunner implements TaskRunner { @@ -60,7 +62,7 @@ public class AndroidTaskRunner implements TaskRunner public void execute(Task task) { task.onAttached(this); - new CustomAsyncTask(task).execute(); + new CustomAsyncTask(task).executeOnExecutor(THREAD_POOL_EXECUTOR); } @Override