diff --git a/uhabits-android/src/androidTest/java/org/isoron/uhabits/BaseAndroidTest.java b/uhabits-android/src/androidTest/java/org/isoron/uhabits/BaseAndroidTest.java index b874a3915..ec6dcaa0e 100644 --- a/uhabits-android/src/androidTest/java/org/isoron/uhabits/BaseAndroidTest.java +++ b/uhabits-android/src/androidTest/java/org/isoron/uhabits/BaseAndroidTest.java @@ -71,7 +71,8 @@ public class BaseAndroidTest extends TestCase protected ModelFactory modelFactory; - @Override + private boolean isDone = false; + @Before public void setUp() { @@ -137,6 +138,25 @@ public class BaseAndroidTest extends TestCase InterfaceUtils.setFixedResolution(r); } + protected void runConcurrently(Runnable... runnableList) throws Exception + { + isDone = false; + ExecutorService executor = Executors.newFixedThreadPool(100); + List futures = new LinkedList<>(); + for (Runnable r : runnableList) + futures.add(executor.submit(() -> + { + while (!isDone) r.run(); + return null; + })); + + Thread.sleep(3000); + isDone = true; + executor.shutdown(); + for(Future f : futures) f.get(); + while (!executor.isTerminated()) Thread.sleep(50); + } + protected void setTheme(@StyleRes int themeId) { targetContext.setTheme(themeId); diff --git a/uhabits-android/src/main/AndroidManifest.xml b/uhabits-android/src/main/AndroidManifest.xml index 9e8e8ae48..39875d05d 100644 --- a/uhabits-android/src/main/AndroidManifest.xml +++ b/uhabits-android/src/main/AndroidManifest.xml @@ -20,8 +20,8 @@ + android:versionCode="32" + android:versionName="1.7.5"> diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/FrequencyChart.java b/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/FrequencyChart.java index 42d664437..f6f24e5d4 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/FrequencyChart.java +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/FrequencyChart.java @@ -258,7 +258,7 @@ public class FrequencyChart extends ScrollableChart float scale = 1.0f/maxFreq * value; float radius = maxRadius * scale; - int colorIndex = Math.round((colors.length-1) * scale); + int colorIndex = Math.min(colors.length - 1, Math.round((colors.length - 1) * scale)); pGraph.setColor(colors[colorIndex]); canvas.drawCircle(rect.centerX(), rect.centerY(), radius, pGraph); } diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/receivers/ReminderController.java b/uhabits-android/src/main/java/org/isoron/uhabits/receivers/ReminderController.java index d29655aa0..d28b7cabb 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/receivers/ReminderController.java +++ b/uhabits-android/src/main/java/org/isoron/uhabits/receivers/ReminderController.java @@ -29,6 +29,8 @@ import org.isoron.uhabits.core.utils.*; import javax.inject.*; +import static org.isoron.uhabits.utils.DateUtils.*; + @ReceiverScope public class ReminderController { @@ -67,7 +69,7 @@ public class ReminderController { long snoozeInterval = preferences.getSnoozeInterval(); - long now = DateUtils.getLocalTime(); + long now = applyTimezone(getLocalTime()); long reminderTime = now + snoozeInterval * 60 * 1000; reminderScheduler.schedule(habit, reminderTime);