2016-12-01 4 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 между другими приложениями или хранить определенные данные в 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 
    */ 
    ... 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^