Merge "Calling close() outside of the main thread breaks stuff."
This commit is contained in:
committed by
Android (Google) Code Review
commit
f6497e45fa
@@ -50,19 +50,6 @@ public class CursorLoader extends AsyncTaskLoader<Cursor> {
|
|||||||
|
|
||||||
Cursor mCursor;
|
Cursor mCursor;
|
||||||
|
|
||||||
final static class CloseTask extends AsyncTask<Cursor, Void, Void> {
|
|
||||||
@Override
|
|
||||||
protected Void doInBackground(Cursor... params) {
|
|
||||||
params[0].close();
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void closeAsync(Cursor cursor) {
|
|
||||||
CloseTask closeTask = new CloseTask();
|
|
||||||
closeTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, cursor);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Runs on a worker thread */
|
/* Runs on a worker thread */
|
||||||
@Override
|
@Override
|
||||||
public Cursor loadInBackground() {
|
public Cursor loadInBackground() {
|
||||||
@@ -90,7 +77,7 @@ public class CursorLoader extends AsyncTaskLoader<Cursor> {
|
|||||||
if (isReset()) {
|
if (isReset()) {
|
||||||
// An async query came in while the loader is stopped
|
// An async query came in while the loader is stopped
|
||||||
if (cursor != null) {
|
if (cursor != null) {
|
||||||
closeAsync(cursor);
|
cursor.close();
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -102,7 +89,7 @@ public class CursorLoader extends AsyncTaskLoader<Cursor> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (oldCursor != null && oldCursor != cursor && !oldCursor.isClosed()) {
|
if (oldCursor != null && oldCursor != cursor && !oldCursor.isClosed()) {
|
||||||
closeAsync(oldCursor);
|
oldCursor.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -162,7 +149,7 @@ public class CursorLoader extends AsyncTaskLoader<Cursor> {
|
|||||||
@Override
|
@Override
|
||||||
public void onCanceled(Cursor cursor) {
|
public void onCanceled(Cursor cursor) {
|
||||||
if (cursor != null && !cursor.isClosed()) {
|
if (cursor != null && !cursor.isClosed()) {
|
||||||
closeAsync(cursor);
|
cursor.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -174,7 +161,7 @@ public class CursorLoader extends AsyncTaskLoader<Cursor> {
|
|||||||
onStopLoading();
|
onStopLoading();
|
||||||
|
|
||||||
if (mCursor != null && !mCursor.isClosed()) {
|
if (mCursor != null && !mCursor.isClosed()) {
|
||||||
closeAsync(mCursor);
|
mCursor.close();
|
||||||
}
|
}
|
||||||
mCursor = null;
|
mCursor = null;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user