我目前正在开发一个 android 项目,在该项目中我想将移动联系人同步到服务器,经过大量研究后SyncAdapter
并在中创建帐户accountmanager
,我自己学会了。但是有两件事我不明白,我在谷歌中搜索了这些内容但无法得到完美的答案。请不要重复这个问题,我想更清楚地知道它是如何工作的。
- 正如谷歌文档所说,每当同步完成时,联系人的脏标志就会改变。我的疑问是,当我以编程方式指定哪些联系人发送到服务器时,Android 操作系统将如何检测该特定联系人的同步状态?
例如:- 在下面的示例中,我想将捆绑包发送到服务器。
Bundle extras = new Bundle();
extras.putInt("contact name after filtering", "number after filtering");
ContentResolver.requestSync(account,ContactsContract.AUTHORITY, extras);
然后收到的捆绑额外内容onPerformSync
方法并发送到服务器。
@Override
public void onPerformSync(Account account, Bundle extras, String authority, ContentProviderClient provider, SyncResult syncResult) {
for (String key : extras.keySet())
{
Log.d("Bundle Debug", key + " = \"" + extras.get(key) + "\"");
}
//Code to send to server
}
假设在上面的示例中,变量 extras 是在过滤联系人列表中的更改后获得的包,想要将它们更新到服务器。现在 SyncAdapter 框架或操作系统将如何检测更改并更新该联系人的脏标志?当然我已经提供了AUTHORITY
,不知道这对查找发生了什么变化有什么帮助。上述方法是正确的实现方法吗?
- 如何判断同步是否失败?或完成?