什么是内容提供商?

时间:2017-12-19 13:28:06

标签: android sqlite android-syncadapter

我只是按照developer.android.com中的教程创建同步适配器到提供程序功能“本地数据库与服务器数据库之间的同步”,并在血腥试验和错误后设法使其工作(onPerformSync已成功调用)。

现在,对于创建同步功能的下一步,我在几篇文章中已经阅读过,我需要创建一个content provider。我已经阅读了https://developer.android.com/guide/topics/providers/content-provider-basics.html,但我仍然不知道它是如何运作的。

从这个链接https://developer.android.com/guide/topics/providers/content-provider-basics.html,它提出了几个问题:

  1. 他们在说什么table?他们在谈论sqlite表还是一些“另一个”表?

  2. content://user_dictionary/words这是什么意思?这是uri到sqlite存储的表文件吗?如果是的话,我怎么知道我的?我的意思是我创建的sqlite商店表在哪里?

  3. 从我读到的内容(如果我说得对),ContentProvider就像一个存储库。他们有相同的功能吗?我已经使用anko https://gist.github.com/mockiemockiz/a552a669d28a3c90c144bc1542b86a5e创建了我的存储库,我可以使用该代码/将该代码转换为能够告诉同步适配器数据已更改的ContentProvider吗?

1 个答案:

答案 0 :(得分:3)

  

我只是按照developer.android.com中的教程创建同步适配器到提供程序功能“本地数据库与服务器数据库之间的同步”,经过血腥试验和错误我设法使其工作(onPerformSync已成功调用)。 / p>

FWIW,string.Join(ClientAPI.COLUMN_DELIMITER),(new string[] {"1", "2" })).Split(ClientAPI.COLUMN_DELIMITER.ToCharArray())并不是特别受欢迎。

  

他们在谈论什么表?

“表格”一词在该页面上显示40次。我们无法知道您对这40个问题中的哪一个感兴趣,并且他们以多种方式使用该术语。

  这是什么意思?

SyncAdapter指向Uri user_dictionary中的数据集合(“表格”)。

  

这是uri到sqlite存储的表文件吗?

这是由ContentProvider的开发人员决定的。 ContentProvider API未规定数据的存储位置。它可以存储在SQLite,JSON文件或其他任何内容中。 约定表示由ContentProvider公开的数据集合映射到SQLite表或视图,但这不是必需的。

  

如果是的话,我怎么知道我的?

如果您使用ContentProvider作为权限,则知道这是ContentProvider(请参阅清单中user_dictionary元素中的android:authorities)。

  

我的意思是我创建的sqlite存储表在哪里?

这取决于你。 <provider>与SQLite无关,除非编写将ContentProvider实现与SQLite绑定的代码。

  

ContentProvider就像一个存储库

不是,至少在我如何使用术语“存储库”方面。 ContentProvider是一些数据存储机制的包装器,允许外部各方对该数据进行受控访问。

  

我可以使用该代码/将该代码转换为能够告诉同步适配器数据已更改的ContentProvider吗?

那将是相当困难的。这是少数开发人员使用ContentProvider

的原因之一