2016-12-01 146 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 
    */ 
    ... 
    } 
相关问题