我只是按照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商店表在哪里?
从我读到的内容(如果我说得对),ContentProvider就像一个存储库。他们有相同的功能吗?我已经使用anko https://gist.github.com/mockiemockiz/a552a669d28a3c90c144bc1542b86a5e创建了我的存储库,我可以使用该代码/将该代码转换为能够告诉同步适配器数据已更改的ContentProvider吗?
答案 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
。