bug:2622719 move 'forcing of cursor execution' to ContentProvider

revert part of the CL: Ia561135e974a44ad3e3774ecb23c6a3d0fc38176
and add it to ContentProvider.query() to force query execution
in worker thread, instead of having the main thread incur the cost
of query execution and potentially get ANR

Change-Id: I0ea8a170bd954a421f4ad825f8090319a83a5b2b
This commit is contained in:
Vasu Nori
2010-04-28 14:22:38 -07:00
parent 9aaf24f2a4
commit 020e534579
2 changed files with 9 additions and 7 deletions

View File

@@ -247,6 +247,8 @@ public abstract class ContentResolver {
releaseProvider(provider);
return null;
}
// force query execution
qCursor.getCount();
long durationMillis = SystemClock.uptimeMillis() - startTime;
maybeLogQueryToEventLog(durationMillis, uri, projection, selection, sortOrder);
// Wrap the cursor object into CursorWrapperInner object

View File

@@ -1341,19 +1341,19 @@ public class SQLiteDatabase extends SQLiteClosable {
SQLiteCursorDriver driver = new SQLiteDirectCursorDriver(this, sql, editTable);
Cursor cursor = null;
int count = 0;
try {
cursor = driver.query(
cursorFactory != null ? cursorFactory : mFactory,
selectionArgs);
// Force query execution
if (cursor != null) {
count = cursor.getCount();
}
} finally {
if (Config.LOGV || mSlowQueryThreshold != -1) {
// Force query execution
int count = -1;
if (cursor != null) {
count = cursor.getCount();
}
long duration = System.currentTimeMillis() - timeStart;
if (Config.LOGV || duration >= mSlowQueryThreshold) {
@@ -1361,7 +1361,7 @@ public class SQLiteDatabase extends SQLiteClosable {
"query (" + duration + " ms): " + driver.toString() + ", args are "
+ (selectionArgs != null
? TextUtils.join(",", selectionArgs)
: "<null>") + ", count is " + count);
: "<null>") + ", count is " + count);
}
}
}