Java 有没有办法知道谁在调用同步适配器?
我的项目中有内容提供商和同步适配器。 在我的项目中,首先从服务器获取数据,然后将其存储在数据库sqlite中 现在我来谈谈我的问题。实际上,我想根据sqlite中修改的数据更改服务器数据 例如:如果我删除数据库中的数据,我还想删除服务器数据库中的数据。为此,我的同步适配器应该知道执行什么操作,如删除或插入 另一种方法是在调用同步适配器时,将整个本地sqlite数据库与服务器中的数据进行比较 我不想要那种方法。有没有办法知道谁在调用同步适配器,或者从同步适配器在内容提供商中执行了什么操作?术语“谁在调用同步适配器”似乎没有价值,只要这不会给您提供任何有用的信息。相反,您很可能希望在有人请求同步时传递一些参数(通过) 接受一个额外的Java 有没有办法知道谁在调用同步适配器?,java,android,android-syncadapter,Java,Android,Android Syncadapter,我的项目中有内容提供商和同步适配器。 在我的项目中,首先从服务器获取数据,然后将其存储在数据库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.
*/
...
}