我有一个应用程序,用户可以在其中离线编辑/添加记录,一旦建立了Internet连接,就应该将它们发送到服务器。这似乎是GMail应用程序的确切行为:
您可以离线编写电子邮件,单击“发送”,关闭应用程序/进程,并在Internet连接恢复后,执行同步,将电子邮件发送到服务器。
问题是我已经有一个SyncAccount,SyncAdapter运行每日同步。如果我要使用 ContentResolver.addPeriodicSync 添加第二个同步,我将不得不创建另一个权限,因此必须使用不同的数据库表?
我可以安排两个彼此独立的同步操作,访问同一个数据库吗?
答案 0 :(得分:0)
问题解决了。显然,您可以立即请求一次性同步,而不是安排一次。您还可以为此一次性同步提供附加列表。
因此,我的解决方案是在该捆绑包中放置一个参数,然后在适配器的 onPerformSync 方法中相应地完成我的魔法。
final String ACCOUNT_NAME = "dummyAcc";
final String ACCOUNT_TYPE = "dummyAccType";
final String PROVIDER = "dummyProvider";
Account appAccount = new Account(ACCOUNT_NAME, ACCOUNT_TYPE);
AccountManager accountManager = AccountManager.get(this);
Bundle extras = new Bundle();
extras.putBoolean("magicParam", true);
extras.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true);
ContentResolver.requestSync(appAccount, PROVIDER, extras);
...
@Override
public void onPerformSync(Account account, Bundle extras, String authority,
ContentProviderClient provider, SyncResult syncResult) {
if (extras.getBoolean("magicParam")) {
// do magic;
}
}