我的项目中有Content provider和同步适配器。 在我的项目中,我首先要从服务器获取数据,然后将其存储在数据库sqlite中。
现在我要来谈谈我的问题。实际上,我想根据在sqlite中修改的数据来更改服务器数据。
例如:如果我删除数据库中的数据,我也想删除服务器数据库中的数据。为此,我的同步适配器应该知道要执行什么操作,例如删除或插入。
另一种方法是在调用同步适配器时将我的整个本地sqlite数据库与服务器中的数据进行比较。
我不想要那种方法。有什么办法知道谁在调用同步适配器,或者从同步适配器在内容提供程序中执行了什么操作?
答案 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.
*/
...
}