像GMail一样同步

时间:2012-10-19 07:55:35

标签: android

我有一个应用程序,用户可以在其中离线编辑/添加记录,一旦建立了Internet连接,就应该将它们发送到服务器。这似乎是GMail应用程序的确切行为:

您可以离线编写电子邮件,单击“发送”,关闭应用程序/进程,并在Internet连接恢复后,执行同步,将电子邮件发送到服务器。

问题是我已经有一个SyncAccount,SyncAdapter运行每日同步。如果我要使用 ContentResolver.addPeriodicSync 添加第二个同步,我将不得不创建另一个权限,因此必须使用不同的数据库表?

我可以安排两个彼此独立的同步操作,访问同一个数据库吗?

1 个答案:

答案 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;
    }
}