Нет. Вы должны сделать это вручную в своем контент-провайдере.
Исходный код функции запроса:
public final Cursor query(Uri uri, String[] projection,
String selection, String[] selectionArgs, String sortOrder) {
IContentProvider provider = acquireProvider(uri);
if (provider == null) {
return null;
}
try {
long startTime = SystemClock.uptimeMillis();
Cursor qCursor = provider.query(uri, projection, selection, selectionArgs, sortOrder);
if (qCursor == null) {
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
return new CursorWrapperInner(qCursor, provider);
} catch (RemoteException e) {
releaseProvider(provider);
// Arbitrary and not worth documenting, as Activity
// Manager will kill this process shortly anyway.
return null;
} catch (RuntimeException e) {
releaseProvider(provider);
throw e;
}
}
Чем больше я думаю об этом, тем больше я убежден, что это * действительно * избежать аргументы правильно. Различные СУБД AFAIK могут иметь разные алгоритмы ускорения. Было бы нецелесообразно, если бы контракт «запрос» был привязан к конкретной СУБД, и не имело бы смысла для меня знать, какие СУБД, которые поддерживают контент-резольвер. – aioobe