我是否需要使用从insert()方法返回的相同URI来获取行

时间:2016-11-29 19:42:11

标签: android android-contentprovider

我对Android内容提供商有一个简单的疑问。

在将单个记录插入db时,我通过附加从insert()方法获取的_id返回URI,并且我在此URI上调用getContentResolver().notifyChange()

所以现在我的URI将是"content://CONTENT_AUTHORITY/TABLE_NAME/_id"

但是在获取单个记录时,我通过选择另一个id(复合键)来获取它,让它为movie_id

所以要取这个,我的uri将是"content://CONTENT_AUTHORITY/TABLE_NAME/movie_id"

现在我将能够获取记录,因为我的URI匹配器只匹配/ TABLE_NAME /#记录。

但是创建的第一个URI会发生什么,我创建了notifyChange()方法?

这样做是不好的做法,因为我在一个URI上使用notifyChange()但是我正在使用其他URI?

1 个答案:

答案 0 :(得分:1)

最佳实践确实是您在insert()方法中返回的uri可用于查询完全相同的对象。显然,如果你只有一种uri格式会更容易,而某些工作流程可能非常有用。

但是再一次,使用别名uris也没有问题,并且能够根据不同的唯一ID查询表中的行。但是,如果您这样做,请使用不同的URI,以便您的内容提供商知道要执行的查询。

在您的示例中,我将content://CONTENT_AUTHORITY/TABLE_NAME/_id个查询条目按行ID,并添加content://CONTENT_AUTHORITY/TABLE_NAME/MOVIE/movie_id uri以按复合键查询条目