我很困惑,使用URI匹配器的全部意义在于确定我们是要在特定行还是整个表上工作。所以万一我们想要在id" ID"我们将id附加到URI的路径,然后URI匹配器将识别哪种URI模式。
但另一方面,我们可以在没有URI匹配器的情况下执行相同操作,只需将所需的行ID放入查询方法的选择Args中。
所以我的问题是为什么我们需要一个URI匹配器?
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
String sortOrder) {
SQLiteDatabase database = petDbHelper.getReadableDatabase();
Cursor cursor;
int match = sUriMatcher.match(uri);
switch (match) {
case PETS:
cursor = database.query(PetContract.PetEntry.TABLE_NAME, projection, null, null,
null, null, null);
break;
case PET_ID:
selection = PetContract.PetEntry._ID + "=?";
selectionArgs = new String[]{String.valueOf(ContentUris.parseId(uri))};
cursor = database.query(PetContract.PetEntry.TABLE_NAME, projection, selection, selectionArgs,
null, null, sortOrder);
break;
default:
throw new IllegalArgumentException("Cannot query unknown URI " + uri);
}
Log.i(TAG, "query: leaving Pet Provider with a cursor");
return cursor;
}