我有一个应用程序,在该应用程序中,用户可以在该应用程序中编辑/添加记录,并且在建立Internet连接后应立即将其发送到服务器。这似乎是Gmail应用程序的确切行为:
您可以离线编写电子邮件,单击"发送",关闭应用程序/过程,当Internet连接返回时,执行了将电子邮件发送到服务器的同步。
问题在于我已经有一个syncaccount,syncadapter运行每日同步。如果我要使用 contentResolver.addperiodicsync 添加第二个同步,那么我将不得不创建另一个权威,因此必须使用不同的数据库表?
我可以独立安排两个同步操作,访问相同的数据库吗?
解决了问题。显然,您可以立即请求一次性同步,而不是安排一个。您还可以为此一次同步提供附加列表。
因此,我的解决方案是在该捆绑包中放置一个参数,然后在适配器的上相应地做我的魔术。
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;
}
}