From ff1e720b3f73f5a47a65414bdf887771ac2a816f Mon Sep 17 00:00:00 2001 From: Tim Su Date: Thu, 23 Feb 2012 02:47:26 -0800 Subject: [PATCH] Run link action stuff on UI thread, android hates us --- .../todoroo/astrid/adapter/TaskAdapter.java | 55 +++++++++---------- 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java b/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java index 2aaed2a6a..65f5bf6fd 100644 --- a/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java +++ b/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java @@ -1,7 +1,5 @@ package com.todoroo.astrid.adapter; -import com.todoroo.astrid.helper.AsyncImageView; - import java.util.Collection; import java.util.Collections; import java.util.Date; @@ -70,6 +68,7 @@ import com.todoroo.astrid.api.TaskDecoration; import com.todoroo.astrid.api.TaskDecorationExposer; import com.todoroo.astrid.core.LinkActionExposer; import com.todoroo.astrid.data.Task; +import com.todoroo.astrid.helper.AsyncImageView; import com.todoroo.astrid.helper.TaskAdapterAddOnManager; import com.todoroo.astrid.notes.NotesDecorationExposer; import com.todoroo.astrid.service.StatisticsConstants; @@ -730,37 +729,37 @@ public class TaskAdapter extends CursorAdapter implements Filterable { @Override public void run() { AndroidUtilities.sleepDeep(500L); - TodorooCursor fetchCursor = taskService.fetchFiltered( + final TodorooCursor fetchCursor = taskService.fetchFiltered( query.get(), null, Task.ID, Task.TITLE, Task.DETAILS, Task.DETAILS_DATE, Task.MODIFICATION_DATE, Task.COMPLETION_DATE); - try { - Task task = new Task(); - LinkActionExposer linkActionExposer = new LinkActionExposer(); - - for(fetchCursor.moveToFirst(); !fetchCursor.isAfterLast(); fetchCursor.moveToNext()) { - task.clear(); - task.readFromCursor(fetchCursor); - if(task.isCompleted()) - continue; - List actions = linkActionExposer.getActionsForTask(ContextManager.getContext(), task.getId()); - if (actions.size() > 0) - taskActionLoader.put(task.getId(), actions.get(0)); - } - if(taskActionLoader.size() > 0) { - Activity activity = fragment.getActivity(); - if (activity != null) { - activity.runOnUiThread(new Runnable() { - @Override - public void run() { - notifyDataSetChanged(); - } - }); + final Activity activity = fragment.getActivity(); + activity.runOnUiThread(new Runnable() { + @Override + public void run() { + try { + Task task = new Task(); + LinkActionExposer linkActionExposer = new LinkActionExposer(); + + for(fetchCursor.moveToFirst(); !fetchCursor.isAfterLast(); fetchCursor.moveToNext()) { + task.clear(); + task.readFromCursor(fetchCursor); + if(task.isCompleted()) + continue; + + List actions = linkActionExposer. + getActionsForTask(ContextManager.getContext(), task.getId()); + if (actions.size() > 0) + taskActionLoader.put(task.getId(), actions.get(0)); + } + if(taskActionLoader.size() > 0) { + notifyDataSetChanged(); + } + } finally { + fetchCursor.close(); } } - } finally { - fetchCursor.close(); - } + }); } }