Closing a cursor from task provider, abstract database catch error

pull/14/head
Tim Su 16 years ago
parent cb09991e2d
commit 5aa270a347

@ -9,7 +9,6 @@ import android.content.ContentValues;
import android.content.Context; import android.content.Context;
import android.database.Cursor; import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.util.Log; import android.util.Log;
@ -112,15 +111,15 @@ abstract public class AbstractDatabase {
try { try {
database = helper.getWritableDatabase(); database = helper.getWritableDatabase();
} catch (SQLiteException writeException) { } catch (final RuntimeException original) {
Log.e("database-" + getName(), "Error opening db", Log.e("database-" + getName(), "Error opening db",
writeException); original);
try { try {
// provide read-only database // provide read-only database
openForReading(); openForReading();
} catch (SQLiteException readException) { } catch (Exception readException) {
// throw original write exception // throw original write exception
throw writeException; throw original;
} }
} }
} }

@ -175,9 +175,8 @@ public class Astrid2TaskProvider extends ContentProvider {
TodorooCursor<Task> cursor = taskService.query(Query.select(Task.ID, Task.TITLE, TodorooCursor<Task> cursor = taskService.query(Query.select(Task.ID, Task.TITLE,
Task.IMPORTANCE, Task.DUE_DATE).where(TaskCriteria.isActive()). Task.IMPORTANCE, Task.DUE_DATE).where(TaskCriteria.isActive()).
orderBy(TaskService.defaultTaskOrder()).limit(MAX_NUMBER_OF_TASKS)); orderBy(TaskService.defaultTaskOrder()).limit(MAX_NUMBER_OF_TASKS));
try {
int[] importanceColors = Task.getImportanceColors(ctx.getResources()); int[] importanceColors = Task.getImportanceColors(ctx.getResources());
Task task = new Task(); Task task = new Task();
for (int i = 0; i < cursor.getCount(); i++) { for (int i = 0; i < cursor.getCount(); i++) {
cursor.moveToNext(); cursor.moveToNext();
@ -203,6 +202,9 @@ public class Astrid2TaskProvider extends ContentProvider {
ret.addRow(values); ret.addRow(values);
} }
} finally {
cursor.close();
}
return ret; return ret;
} }

Loading…
Cancel
Save