android contentProvider notifyChange

时间:2013-09-28 08:05:38

标签: android android-contentprovider android-cursoradapter android-cursorloader

我对contentProvide中使用的notifyChange machenism感到困惑:

// Tell the cursor what uri to watch, so it knows when its source data changes
        c.setNotificationUri(getContext().getContentResolver(), uri);

getContext().getContentResolver().notifyChange(noteUri, null);

以下是问题(假设提供者和客户端在不同的包中):

  1. Provider返回的contentResolver与客户端返回的Resolver相同吗?
  2. 游标是否与提供者和客户端返回的游标相同?
  3. 要通知的Uri决议变更是什么?整个表uri还是一行?
  4. 请澄清

1 个答案:

答案 0 :(得分:0)

我知道这是一个老问题。我正在回答,这对遇到这个问题的人很有帮助。

  
      
  1. Provider返回的contentResolver与客户端返回的Resolver相同吗?
  2.   

是的,它是一样的。

  
      
  1. 游标是否与提供者和客户端返回的游标相同?
  2.   

我想,你是在你的第一个代码片段的上下文中问这个,这个代码片段在query()方法中可见。在这里,您要在光标上设置通知uri,该通知将返回给客户端。因此,显然,客户端和提供者使用相同的游标。

  
      
  1. 要通知的Uri决议变更是什么?整个表uri还是一行?
  2.   

Uri通知取决于操作:

  1. insert() - 通知Uri是附加了表的Uri 新插入的行的ID。

  2. delete()和update() - 这里,Uri是表Uri,附有已删除或更新的行的ID。