有什么办法知道谁在调用同步适配器?

时间:2018-08-08 10:02:37

标签: java android android-syncadapter

我的项目中有Content provider和同步适配器。 在我的项目中,我首先要从服务器获取数据,然后将其存储在数据库sqlite中。

现在我要来谈谈我的问题。实际上,我想根据在sqlite中修改的数据来更改服务器数据。

例如:如果我删除数据库中的数据,我也想删除服务器数据库中的数据。为此,我的同步适配器应该知道要执行什么操作,例如删除或插入。

另一种方法是在调用同步适配器时将我的整个本地sqlite数据库与服务器中的数据进行比较。

我不想要那种方法。有什么办法知道谁在调用同步适配器,或者从同步适配器在内容提供程序中执行了什么操作?

1 个答案:

答案 0 :(得分:0)

“谁正在调用同步适配器” 似乎没有什么价值,只要这不会给您有用的信息即可。相反,当某人请求同步时(通过requestSync()),您很可能希望传递一些参数。

ContentResolver.requestSync(Account, String, Bundle)接受一个额外的Bundle,它将被传递到您的SyncAdapter的{​​{3}}:



    // a code that initiates sync 
    ContentResolver.requestSync(ACCOUNT, AUTHORITY, someBundle);

    ...

    // your implmementation of SyncAdapter
    @Override
    public void onPerformSync(
            Account account,
            Bundle extras, // acquire information from this bundle
            String authority,
            ContentProviderClient provider,
            SyncResult syncResult) {
           /*
            * Put the data transfer code here.
            */
            ...
    }