【发布时间】:2018-12-27 17:09:15
【问题描述】:
如何取消 SyncAdapter 同步过程? ContentResolver.cancelSync() 不会取消它。
我需要它,因为我将应用程序中的一千个联系人(在 onPerformSync() 中)同步到 Android 通讯录(调用 ContentResolver.requestSync())。当我想执行新的同步时,我需要取消当前的同步。
为了再次检查 ContentResolver.cancelSync() 没有取消同步,我下载了BasicSyncAdapter。将 onPerformSync() 替换为
@Override
public void onPerformSync(Account account, Bundle extras, String authority,
ContentProviderClient provider, SyncResult syncResult) {
for (int i = 0; i < 20; i ++) {
if (i == 10) {
ContentResolver.cancelSync(GenericAccountService.GetAccount(ACCOUNT_TYPE), FeedContract.CONTENT_AUTHORITY);
}
Log.i(TAG, "count " + i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
所以在 10 之后它必须停止,但它记录了所有 20。
谢谢!
【问题讨论】:
标签: android android-contentresolver android-syncadapter