2012-10-19 32 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; 
    } 
} 
相關問題