2016-12-01 241 views
1

即使應用程序未運行,是否可以在後臺運行SyncAdapter?我想更新sqlite數據庫,如果在服務器中有任何更改,即使android應用程序沒有運行?當應用程序未運行時在後臺運行SyncAdapter

+0

https://developer.android.com/training/sync-adapters/creating-sync-adapter.html –

回答

0

可能就是這個用例的最佳做法是:

1)火從您的服務器Broadcast,只要數據發生變化。

2)從廣播接收機開始服務。 (您可以通過廣播發送一些額外的數據來區分廣播操作)。

3)更新您啓動的服務中的數據庫。

如果上述方案不是一個選項,然後:

我會建議你使用JobScheduler這是此類使用情況更新和推薦的方法。

雖然,您還可以使用SyncAdapters實現您的目標。但是現在,當您需要在其他應用程序之間維護帳戶或共享AuthTokens時,通常會使用它們,或將SyncAdapter特定數據存儲在您的ContentProviders中。

1

您可以定期運行同步適配器。無論您的應用程序是否在運行都沒關係。它將始終執行定期同步。形成documentation,您可以添加定期同步像這樣

ContentResolver.addPeriodicSync(
      ACCOUNT, 
      AUTHORITY, 
      Bundle.EMPTY, 
      SYNC_INTERVAL); 

,然後在onPerformSync方法你數據庫的東西。

@Override 
    public void onPerformSync(Account account,Bundle extras,String authority,ContentProviderClient provider,SyncResult syncResult) { 
    /* 
    * Do your database stuff 
    */ 
    ... 
    }