Use DatabaseUtils method instead of query()

Use DatabaseUtils.longForQuery() method instead of SQLiteDatabase.query().
This reduces processing cost of database cursor.

Change-Id: Ibe53645b32a4de1ab6518f879e564ddf8f75d822

Conflicts:
	src/com/android/email/provider/EmailProvider.java
This commit is contained in:
yi.jang 2013-05-16 09:20:12 +09:00 committed by Paul Westbrook
parent 5673236ebe
commit a674551464
1 changed files with 8 additions and 11 deletions

View File

@ -37,6 +37,7 @@ import android.database.MatrixCursor;
import android.database.MergeCursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.DatabaseUtils;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Binder;
@ -415,17 +416,13 @@ public class EmailProvider extends ContentProvider {
}
// If we have accounts, we're done
Cursor c = mainDatabase.query(Account.TABLE_NAME, EmailContent.ID_PROJECTION, null, null,
null, null, null);
try {
if (c.moveToFirst()) {
if (MailActivityEmail.DEBUG) {
LogUtils.w(TAG, "restoreIfNeeded: Account exists.");
}
return; // At least one account exists.
}
} finally {
c.close();
if (DatabaseUtils.longForQuery(mainDatabase,
"SELECT EXISTS (SELECT ? FROM " + Account.TABLE_NAME + " )",
EmailContent.ID_PROJECTION) > 0) {
if (MailActivityEmail.DEBUG) {
LogUtils.w(TAG, "restoreIfNeeded: Account exists.");
}
return;
}
restoreAccounts(context, mainDatabase);