Android Sync Adapter (使用Stub Content Provider) 笔记

Android系统提供Sync Adapter功能用于移动端App与服务器端进行数据同步。在Android开发者官网上有一个简要的教程。在学习过程中也参考了Google自家的sample code和这一片出自Udi Cohen的非常出色的博客。在自己尝试过程中,对Sync Adapter的实现遇到了一些问题,学习到一些经验知识,这里做一总结。

Stub

最开始学Android官方教程时,对“Stub"这个词理解非常模糊,后来发现,所谓Stub Authenticator和Stub Content Provider,意思就是临时设计的一个满足了基本接口但是没有任何实际功能的类,用来辅助对Sync Adapter的说明。在复现Android教程上的过程时,对于Stub Authenticator和Stub Content Provider的实现,一定要注意各个接口函数的返回值,返回值一定要是对Sync Adapter有意义的值,特殊注意的是StubProvider类的onCreate()函数,一定要返回true。

Content Provider相关的设置

为了正确使用Sync Adapter,有关于Content Provider的设置一定要注意,必须使以下几个位置的设置完全一致才能确保Sync Adapter的成功:

(1)Manifest文件中<provider>元素内android:authorities属性;

(2)Sync Adapter对应的service的resource file中<sync-adapter>元素的android:contentAuthority属性;

(3)若使用ContentResolver.requestSync()函数进行调试,requestSync()函数的第二个参数。

以上几个位置的值必须完全一致。

Service的设置

在目前Android官方的教程上,对Manifest文件里对应于Sync Adapter的<service>元素提出,android:process属性可配置为:sync。经实际调试发现手工的requestSync()并不能正常执行。对比Google自家的sample code发现,android:process属性都没有显式设置。于是去掉该属性,之后发现手工requestSync()函数正确执行。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值