From bf6562f854e86ea4435244e9b975ed01dceff702 Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Fri, 1 Apr 2016 17:50:14 -0400 Subject: [PATCH] Update views on background thread --- .../uhabits/fragments/ShowHabitFragment.java | 28 ++++++++++++++++--- .../isoron/uhabits/views/HabitDataView.java | 2 ++ .../uhabits/views/HabitFrequencyView.java | 2 -- .../uhabits/views/HabitHistoryView.java | 2 -- .../isoron/uhabits/views/HabitScoreView.java | 2 -- .../isoron/uhabits/views/HabitStreakView.java | 1 - 6 files changed, 26 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/org/isoron/uhabits/fragments/ShowHabitFragment.java b/app/src/main/java/org/isoron/uhabits/fragments/ShowHabitFragment.java index fa3afb932..f9f6f2da7 100644 --- a/app/src/main/java/org/isoron/uhabits/fragments/ShowHabitFragment.java +++ b/app/src/main/java/org/isoron/uhabits/fragments/ShowHabitFragment.java @@ -47,6 +47,7 @@ import org.isoron.uhabits.dialogs.HistoryEditorDialog; import org.isoron.uhabits.helpers.ReminderHelper; import org.isoron.uhabits.models.Habit; import org.isoron.uhabits.models.Score; +import org.isoron.uhabits.tasks.BaseTask; import org.isoron.uhabits.views.HabitDataView; import org.isoron.uhabits.views.HabitFrequencyView; import org.isoron.uhabits.views.HabitHistoryView; @@ -151,6 +152,7 @@ public class ShowHabitFragment extends Fragment private void updateScoreRing(View view) { if(habit == null) return; + if(view == null) return; RingView scoreRing = (RingView) view.findViewById(R.id.scoreRing); scoreRing.setColor(habit.color); @@ -230,11 +232,29 @@ public class ShowHabitFragment extends Fragment public void refreshData() { - if(dataViews == null) return; - updateScoreRing(getView()); + new BaseTask() + { + @Override + protected Void doInBackground(Void... params) + { + if(dataViews == null) return null; + updateScoreRing(getView()); + + for(HabitDataView view : dataViews) + view.refreshData(); + + return null; + } + + @Override + protected void onPostExecute(Void aVoid) + { + if(dataViews == null) return; + for(HabitDataView view : dataViews) + view.invalidate(); + } + }.execute(); - for(HabitDataView view : dataViews) - view.refreshData(); } @Override diff --git a/app/src/main/java/org/isoron/uhabits/views/HabitDataView.java b/app/src/main/java/org/isoron/uhabits/views/HabitDataView.java index f6d3c712a..271f49aa2 100644 --- a/app/src/main/java/org/isoron/uhabits/views/HabitDataView.java +++ b/app/src/main/java/org/isoron/uhabits/views/HabitDataView.java @@ -26,4 +26,6 @@ public interface HabitDataView void setHabit(Habit habit); void refreshData(); + + void invalidate(); } diff --git a/app/src/main/java/org/isoron/uhabits/views/HabitFrequencyView.java b/app/src/main/java/org/isoron/uhabits/views/HabitFrequencyView.java index 94b34af32..283dd777d 100644 --- a/app/src/main/java/org/isoron/uhabits/views/HabitFrequencyView.java +++ b/app/src/main/java/org/isoron/uhabits/views/HabitFrequencyView.java @@ -180,8 +180,6 @@ public class HabitFrequencyView extends ScrollableDataView implements HabitDataV generateRandomData(); else if(habit != null) frequency = habit.repetitions.getWeekdayFrequency(); - - invalidate(); } private void generateRandomData() diff --git a/app/src/main/java/org/isoron/uhabits/views/HabitHistoryView.java b/app/src/main/java/org/isoron/uhabits/views/HabitHistoryView.java index a15059295..1e3e4514c 100644 --- a/app/src/main/java/org/isoron/uhabits/views/HabitHistoryView.java +++ b/app/src/main/java/org/isoron/uhabits/views/HabitHistoryView.java @@ -26,7 +26,6 @@ import android.graphics.Paint; import android.graphics.Paint.Align; import android.graphics.RectF; import android.util.AttributeSet; -import android.util.Log; import android.view.HapticFeedbackConstants; import android.view.MotionEvent; @@ -221,7 +220,6 @@ public class HabitHistoryView extends ScrollableDataView implements HabitDataVie } updateDate(); - invalidate(); } private void generateRandomData() diff --git a/app/src/main/java/org/isoron/uhabits/views/HabitScoreView.java b/app/src/main/java/org/isoron/uhabits/views/HabitScoreView.java index 02cd33947..87de29d72 100644 --- a/app/src/main/java/org/isoron/uhabits/views/HabitScoreView.java +++ b/app/src/main/java/org/isoron/uhabits/views/HabitScoreView.java @@ -185,8 +185,6 @@ public class HabitScoreView extends ScrollableDataView implements HabitDataView if (habit == null) return; scores = habit.scores.getAllValues(bucketSize); } - - invalidate(); } public void setBucketSize(int bucketSize) diff --git a/app/src/main/java/org/isoron/uhabits/views/HabitStreakView.java b/app/src/main/java/org/isoron/uhabits/views/HabitStreakView.java index e3f1692e1..326e40b6a 100644 --- a/app/src/main/java/org/isoron/uhabits/views/HabitStreakView.java +++ b/app/src/main/java/org/isoron/uhabits/views/HabitStreakView.java @@ -169,7 +169,6 @@ public class HabitStreakView extends View implements HabitDataView if(habit == null) return; streaks = habit.streaks.getAll(maxStreakCount); updateMaxMin(); - postInvalidate(); } @Override