我对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?
答案 0 :(得分:1)
最佳实践确实是您在insert()
方法中返回的uri可用于查询完全相同的对象。显然,如果你只有一种uri格式会更容易,而某些工作流程可能非常有用。
但是再一次,使用别名uris也没有问题,并且能够根据不同的唯一ID查询表中的行。但是,如果您这样做,请使用不同的URI,以便您的内容提供商知道要执行的查询。
在您的示例中,我将content://CONTENT_AUTHORITY/TABLE_NAME/_id
个查询条目按行ID,并添加content://CONTENT_AUTHORITY/TABLE_NAME/MOVIE/movie_id
uri以按复合键查询条目