猿问

为什么ContentResolver.requestSync不触发同步?

我正在尝试实现Google IO-幻灯片26中讨论的Content-Provider-Sync Adapter模式。我的内容提供程序正在运行,当我从Dev Tools Sync Tester应用程序触发它时,我的同步起作用,但是当我调用ContentResolver时。来自ContentProvider的requestSync(帐户,授权,捆绑),我的同步从未触发。


ContentResolver.requestSync(

        account, 

        AUTHORITY, 

        new Bundle());

编辑-添加清单清单我的清单xml包含:


<service

    android:name=".sync.SyncService"

    android:exported="true">

    <intent-filter>

        <action

            android:name="android.content.SyncAdapter" />

    </intent-filter>

    <meta-data android:name="android.content.SyncAdapter"

    android:resource="@xml/syncadapter" />

</service>

- 编辑


与我的同步服务关联的syncadapter.xml包含:


<?xml version="1.0" encoding="utf-8"?>

<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"  

    android:contentAuthority="AUTHORITY"

    android:accountType="myaccounttype"

    android:supportsUploading="true"

/>

不知道其他什么代码会有用。传递给requestSync的帐户是“ myaccounttype”,并且传递给调用的AUTHORITY匹配我的syc适配器xml。


ContentResolver.requestSync是否是请求同步的正确方法?看起来好像同步测试器工具直接绑定到服务并调用开始同步,但这似乎违反了与同步体系结构集成的目的。


如果这是请求同步的正确方法,那么为什么同步测试器会起作用,而不是我对ContentResolver.requestSync的调用?我需要通过捆绑销售商品吗?


我正在运行2.1和2.2的设备上的模拟器中进行测试。


月关宝盒
浏览 638回答 3
3回答

四季花海

我正在使用setIsSyncableAccountManager setAuthToken方法。但是setAuthToken之前setIsSyncable达到了返回的功能。更改订单后,一切正常!

萧十郎

我什么都不知道,但是设备会记住它需要同步,并且一旦打开全局同步,它就会启动。您真的不应该尝试在这一点上胜过用户-尤其是在极端情况下,“关闭全局同步”是节省电池电量的关键方法之一。如果您真的担心数据无法同步,请考虑一个弹出窗口,告诉用户为什么数据一直处于静止状态(如果已经放置了一段时间)。这样,您可以教育意外配置其设备的用户,并提醒高级用户万一他们忘记了。
随时随地看视频慕课网APP

相关分类

Android
我要回答