2016-12-01 8 views
1

アプリケーションが実行されていなくても、バックグラウンドでSyncAdapterを実行できますか?私はアンドロイドアプリケーションが実行されていない場合でも、サーバーに変更がある場合、sqliteデータベースを更新したいですか?アプリケーションが実行されていないときに、バックグラウンドでSyncAdapterを実行します。

+0

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

答えて

0

おそらくこのユースケースのためのベストプラクティスは次のとおりです。

1)いつでもデータの変更、サーバーからBroadcast火災。

2)ブロードキャスト受信者からサービスを開始します。 (ブロードキャストでいくつかのデータを送信して、ブロードキャスト操作を区別することができます)。

3)開始したサービスでデータベースを更新します。

上記溶液は、その後オプションは、されていない場合:

私はあなたがそのようなユースケースの新しいおよび推奨されるアプローチであるJobSchedulerを使用することをお勧めします。

ただし、SyncAdaptersを使用して目標を達成することもできます。しかし、現在は、アカウントを管理したり、他のアプリとの間でAuthTokensを共有したり、ContentProvidersに特定のデータを保存する必要がある場合に使用されます。

1

シンクアダプタは定期的に実行できます。あなたがアプリが走っているかどうかは関係ありません。定期的に同期を実行します。 documentationを形成するには、この方法のように、あなたのonPerformSync方法で

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

そして定期的に同期を追加することができますあなたのデータベースのものを行います。

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