停止Android SyncAdapter同步

Tar*_*nfx 6 android

我的应用程序有多个帐户和SyncAdapter.我希望在用户选择其他帐户后立即停止同步帐户.我正在做:

ContentResolver.cancelSync(new Account(mAccount, ACCOUNT_TYPE), MyProvider.AUTHORITY);
ContentResolver.removePeriodicSync(new Account(mAccount, ACCOUNT_TYPE), MyProvider.AUTHORITY, new Bundle());
Run Code Online (Sandbox Code Playgroud)

它仍然同步.如何阻止它同步?

ps我最初通过setSyncAutomatically,requestSync启用了Sync.

and*_*per 10

正确答案应该是:

使用cancelSync取消同步.

根据本网站的解释:

我们可以通过调用cancelSync()来取消同步请求.如果同步适配器处于"待定"状态,这意味着它尚未启动,它将立即被取消并变为"空闲"状态.如果它已在运行,则将调用同步适配器上的onSyncCanceled()方法.例如,您可以使用它来设置onPerformSync()将定期检查并响应的"isSyncStopped"标志.


Tar*_*nfx 8

我想到了.

我们要用:

int syncOnOff = 0;

ContentResolver.setIsSyncable(account, MyProvider.AUTHORITY, syncOnOff);
Run Code Online (Sandbox Code Playgroud)

其中syncOnOff为0表示禁用,> 0表示启用.| O | 为什么不是真假?

  • 这并没有明确地停止正在运行的同步过程,它只是说在实际运行同步完成后我不会再进行同步 (3认同)
  • 你救了我的一天!@Nickolaus:然后你将它与`ContentResolver.cancelSync(new Account(mAccount, ACCOUNT_TYPE), MyProvider.AUTHORITY);`结合起来 (2认同)