我只是按照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,它提出了几个问题:
table
?他们在谈论sqlite表还是一些“另一个”表?content://user_dictionary/words
这是什么意思?这是uri到sqlite存储的表文件吗?如果是的话,我怎么知道我的?我的意思是我创建的sqlite存储表在哪里?我只是按照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
的原因之一。