Java 有没有办法知道谁在调用同步适配器?

Java 有没有办法知道谁在调用同步适配器?,java,android,android-syncadapter,Java,Android,Android Syncadapter,我的项目中有内容提供商和同步适配器。 在我的项目中,首先从服务器获取数据,然后将其存储在数据库sqlite中 现在我来谈谈我的问题。实际上,我想根据sqlite中修改的数据更改服务器数据 例如:如果我删除数据库中的数据,我还想删除服务器数据库中的数据。为此,我的同步适配器应该知道执行什么操作,如删除或插入 另一种方法是在调用同步适配器时,将整个本地sqlite数据库与服务器中的数据进行比较 我不想要那种方法。有没有办法知道谁在调用同步适配器,或者从同步适配器在内容提供商中执行了什么操作?术语“谁

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

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

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

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

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

术语“谁在调用同步适配器”似乎没有价值,只要这不会给您提供任何有用的信息。相反,您很可能希望在有人请求同步时传递一些参数(通过)

接受一个额外的
,该包将传递给您的
同步适配器


这是合法的/建议的方式。当然,你也可以用不好的方法,例如在共享首选项中保存一些数据并读取这些数据,但是。。。别那么做。这种方法有什么问题?我想知道从同步适配器在内容提供商中执行了什么操作。您可以通过bundle将查询传递到
SyncAdapter
,这样您就知道
ContentProvider
执行了什么确切操作。基本上,您需要将某种密钥从一个执行点传递到另一个执行点。谢谢。现在,我假设除了bundle之外,并没有其他方法可以将数据传递给同步适配器。


    // 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.
            */
            ...
    }