[英]Is there any way to know who is calling the sync adapter?
我的項目中有Content provider和同步適配器。 在我的項目中,我首先要從服務器獲取數據,然后將其存儲在數據庫sqlite中。
現在我要解決我的問題。 實際上,我想根據在sqlite中修改的數據來更改服務器數據。
例如:如果我刪除數據庫中的數據,我也想刪除服務器數據庫中的數據。 為此,我的同步適配器應知道執行了哪些操作(例如刪除或插入)。
另一種方法是在調用同步適配器時將我的整個本地sqlite數據庫與服務器中的數據進行比較。
我不想要那種方法。 有什么方法可以知道誰在調用同步適配器,或者從同步適配器在內容提供程序中執行了什么操作?
術語“誰正在調用同步適配器”似乎沒有什么價值,只要它不會給您有用的信息即可。 取而代之的是,您很可能希望在有人要求同步時(通過requestSync()
)傳遞一些參數。
ContentResolver.requestSync(Account, String, Bundle)
接受一個額外的Bundle
,它將傳遞給您的SyncAdapter
的onPerformSync()
:
// 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.
*/
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.