2

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

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

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

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

4

1 回答 1

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;
    }
}
于 2012-10-19T14:45:41.277 回答