2012-10-19 33 views
2

我有一个应用程序,用户可以在其中脱机编辑/添加记录,并且应在建立Internet连接后立即将它们发送到服务器。它似乎是GMail应用程序的确切行为:像GMail一样同步

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

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

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

回答

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; 
    } 
} 
相关问题