From 7d9d45ffedb0f61b7839c6977ffc2a3d16dbc503 Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Thu, 20 Apr 2017 16:39:41 -0400 Subject: [PATCH] Small performance changes --- .../list/views/CheckmarkButtonView.java | 2 +- .../org/isoron/uhabits/models/ScoreList.java | 5 ++++- .../models/memory/MemoryScoreList.java | 2 ++ .../models/sqlite/SQLiteScoreList.java | 1 + .../models/sqlite/records/HabitRecord.java | 21 +++++++++---------- .../notifications/NotificationTray.java | 7 +++++-- .../isoron/uhabits/widgets/WidgetUpdater.java | 20 ++++++++++++------ 7 files changed, 37 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/org/isoron/uhabits/activities/habits/list/views/CheckmarkButtonView.java b/app/src/main/java/org/isoron/uhabits/activities/habits/list/views/CheckmarkButtonView.java index 9b4ca03b4..ed6861ff6 100644 --- a/app/src/main/java/org/isoron/uhabits/activities/habits/list/views/CheckmarkButtonView.java +++ b/app/src/main/java/org/isoron/uhabits/activities/habits/list/views/CheckmarkButtonView.java @@ -138,7 +138,7 @@ public class CheckmarkButtonView extends View paint.setTextSize(res.getDimension(R.dimen.regularTextSize)); rect = new RectF(); - color = ColorUtils.getAndroidTestColor(0); + color = Color.BLACK; lowContrastColor = styledRes.getColor(R.attr.lowContrastTextColor); } } 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 7eda54256..1afb19be2 100644 --- a/app/src/main/java/org/isoron/uhabits/models/ScoreList.java +++ b/app/src/main/java/org/isoron/uhabits/models/ScoreList.java @@ -33,6 +33,8 @@ public abstract class ScoreList implements Iterable protected ModelObservable observable; + protected Double todayValue = null; + /** * Creates a new ScoreList for the given habit. *

@@ -69,7 +71,8 @@ public abstract class ScoreList implements Iterable */ public double getTodayValue() { - return getValue(DateUtils.getStartOfToday()); + if(todayValue == null) todayValue = getValue(DateUtils.getStartOfToday()); + return todayValue; } /** diff --git a/app/src/main/java/org/isoron/uhabits/models/memory/MemoryScoreList.java b/app/src/main/java/org/isoron/uhabits/models/memory/MemoryScoreList.java index 5dafb166d..b4ddc9fec 100644 --- a/app/src/main/java/org/isoron/uhabits/models/memory/MemoryScoreList.java +++ b/app/src/main/java/org/isoron/uhabits/models/memory/MemoryScoreList.java @@ -77,6 +77,8 @@ public class MemoryScoreList extends ScoreList if (s.getTimestamp() >= timestamp) discard.add(s); list.removeAll(discard); + + todayValue = null; getObservable().notifyListeners(); } diff --git a/app/src/main/java/org/isoron/uhabits/models/sqlite/SQLiteScoreList.java b/app/src/main/java/org/isoron/uhabits/models/sqlite/SQLiteScoreList.java index 77b3a2515..6479a58fc 100644 --- a/app/src/main/java/org/isoron/uhabits/models/sqlite/SQLiteScoreList.java +++ b/app/src/main/java/org/isoron/uhabits/models/sqlite/SQLiteScoreList.java @@ -132,6 +132,7 @@ public class SQLiteScoreList extends ScoreList .and("timestamp >= ?", timestamp) .execute(); + todayValue = null; getObservable().notifyListeners(); } diff --git a/app/src/main/java/org/isoron/uhabits/models/sqlite/records/HabitRecord.java b/app/src/main/java/org/isoron/uhabits/models/sqlite/records/HabitRecord.java index f60e3fe7e..6edafacda 100644 --- a/app/src/main/java/org/isoron/uhabits/models/sqlite/records/HabitRecord.java +++ b/app/src/main/java/org/isoron/uhabits/models/sqlite/records/HabitRecord.java @@ -52,16 +52,16 @@ public class HabitRecord extends Model implements SQLiteRecord public String description; @Column(name = "freq_num") - public Integer freqNum; + public int freqNum; @Column(name = "freq_den") - public Integer freqDen; + public int freqDen; @Column(name = "color") - public Integer color; + public int color; @Column(name = "position") - public Integer position; + public int position; @Nullable @Column(name = "reminder_hour") @@ -71,24 +71,23 @@ public class HabitRecord extends Model implements SQLiteRecord @Column(name = "reminder_min") public Integer reminderMin; - @NonNull @Column(name = "reminder_days") - public Integer reminderDays; + public int reminderDays; @Column(name = "highlight") - public Integer highlight; + public int highlight; @Column(name = "archived") - public Integer archived; + public int archived; @Column(name = "type") - public Integer type; + public int type; @Column(name = "target_value") - public Double targetValue; + public double targetValue; @Column(name = "target_type") - public Integer targetType; + public int targetType; @Column(name = "unit") public String unit; diff --git a/app/src/main/java/org/isoron/uhabits/notifications/NotificationTray.java b/app/src/main/java/org/isoron/uhabits/notifications/NotificationTray.java index f05e51720..838e4b4a1 100644 --- a/app/src/main/java/org/isoron/uhabits/notifications/NotificationTray.java +++ b/app/src/main/java/org/isoron/uhabits/notifications/NotificationTray.java @@ -95,8 +95,11 @@ public class NotificationTray (ToggleRepetitionCommand) command; Habit habit = toggleCmd.getHabit(); - if (habit.getCheckmarks().getTodayValue() != Checkmark.UNCHECKED) - cancel(habit); + taskRunner.execute(() -> + { + if (habit.getCheckmarks().getTodayValue() != + Checkmark.UNCHECKED) cancel(habit); + }); } if (command instanceof DeleteHabitsCommand) diff --git a/app/src/main/java/org/isoron/uhabits/widgets/WidgetUpdater.java b/app/src/main/java/org/isoron/uhabits/widgets/WidgetUpdater.java index 81928f917..72f3e441a 100644 --- a/app/src/main/java/org/isoron/uhabits/widgets/WidgetUpdater.java +++ b/app/src/main/java/org/isoron/uhabits/widgets/WidgetUpdater.java @@ -25,6 +25,7 @@ import android.support.annotation.*; import org.isoron.uhabits.*; import org.isoron.uhabits.commands.*; +import org.isoron.uhabits.tasks.*; import javax.inject.*; @@ -40,15 +41,19 @@ public class WidgetUpdater implements CommandRunner.Listener @NonNull private final CommandRunner commandRunner; + private TaskRunner taskRunner; + @NonNull private final Context context; @Inject public WidgetUpdater(@NonNull @AppContext Context context, - @NonNull CommandRunner commandRunner) + @NonNull CommandRunner commandRunner, + @NonNull TaskRunner taskRunner) { this.context = context; this.commandRunner = commandRunner; + this.taskRunner = taskRunner; } @Override @@ -79,11 +84,14 @@ public class WidgetUpdater implements CommandRunner.Listener public void updateWidgets() { - updateWidgets(CheckmarkWidgetProvider.class); - updateWidgets(HistoryWidgetProvider.class); - updateWidgets(ScoreWidgetProvider.class); - updateWidgets(StreakWidgetProvider.class); - updateWidgets(FrequencyWidgetProvider.class); + taskRunner.execute(() -> + { + updateWidgets(CheckmarkWidgetProvider.class); + updateWidgets(HistoryWidgetProvider.class); + updateWidgets(ScoreWidgetProvider.class); + updateWidgets(StreakWidgetProvider.class); + updateWidgets(FrequencyWidgetProvider.class); + }); } public void updateWidgets(Class providerClass)