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

Do I need to use the same URI returned from my insert() method to fetch a row

我对 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 获取数据?

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

但话又说回来,别名 uris 也没有问题,并且能够根据不同的唯一 ID 从 table 查询行。但如果您这样做,请使用不同的 URI,以便您的内容提供商知道要执行哪个查询。

在你的例子中,我会让 content://CONTENT_AUTHORITY/TABLE_NAME/_id 通过行 ID 查询条目,并添加一个 content://CONTENT_AUTHORITY/TABLE_NAME/MOVIE/movie_id uri 来通过复合键查询条目