什么是内容提供商?

问题描述 投票:1回答:1

我只是按照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吗?
android sqlite android-syncadapter
1个回答
3
投票

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

FWIW,SyncAdapter并不是特别受欢迎。

他们在谈论什么表?

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

这是什么意思?

这是一个Uri指向user_dictionary ContentProvider中的数据集(“表”)。

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

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

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

如果你使用ContentProvider作为你的权威,你知道这是你的user_dictionary(参见清单中android:authorities元素中的<provider>)。

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

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

ContentProvider就像一个存储库

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

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

那将是相当困难的。这是为什么很少有开发人员使用SyncAdapter的原因之一。

© www.soinside.com 2019 - 2024. All rights reserved.