Query the given URI, returning a Cursor over the result set
with optional support for cancellation.
For best performance, the caller should follow these guidelines:
Provide an explicit projection, to prevent
reading data from storage that aren't going to be used.
Use question mark parameter markers such as 'phone=?' instead of
explicit values in the selection parameter, so that queries
that differ only by those values will be recognized as the same
for caching purposes.
Uri: The URI, using the content:// scheme, for the content to
String: A list of which columns to return. Passing null will
return all columns, which is inefficient.
String: A filter declaring which rows to return, formatted as an
SQL WHERE clause (excluding the WHERE itself). Passing null will
return all rows for the given URI.
String: You may include ?s in selection, which will be
replaced by the values from selectionArgs, in the order that they
appear in the selection. The values will be bound as Strings.
String: How to order the rows, formatted as an SQL ORDER BY
clause (excluding the ORDER BY itself). Passing null will use the
default sort order, which may be unordered.
CancellationSignal: A signal to cancel the operation in progress, or null if none.
If the operation is canceled, then OperationCanceledException will be thrown
when the query is executed.