Как можно услышать прогресс от Android SyncAdapter? - PullRequest
6 голосов
/ 11 марта 2011

Я вспоминаю чтение об интерфейсе приемника вещания от адаптера синхронизации или какого-либо ResultReceiver событий хода синхронизации.Есть ли что-то встроенное в шаблон SyncAdapter или это домашнее?

Ответы [ 2 ]

11 голосов
/ 17 апреля 2014

Я только что реализовал широковещательный приемник от адаптера синхронизации, и он работает как по маслу!

Использование Receiver, установленного в качестве внутреннего класса, и вызов registerReceiver в onCreate и unregisterReceiver в onDestroy сделали это для меня.

Поскольку у меня есть один метод стратегии для создания и запроса нескольких потоков,В начале прогона SyncAdapter у меня есть:

Intent intent = new Intent();
intent.setAction(ACTION);
intent.putExtra(SYNCING_STATUS, RUNNING);
context.sendBroadcast(intent); 

И в конце прогона синхронизации у меня есть:

intent.putExtra(SYNCING_STATUS, STOPPING);
context.sendBroadcast(intent); 

В своей деятельности я объявляю:

onCreate(Bundle savedInstance){

super.onCreate(savedInstance);
SyncReceiver myReceiver = new SyncReceiver();
RegisterReceiver(myReceiver,ACTION);

}



onDestroy(){

super.onPause();
unRegisterReceiver(myReceiver);

}



 public class SyncReceiver extends BroadcastReceiver {

  @Override
  public void onReceive(Context context, Intent intent) {
            Bundle extras = intent.getExtras();
    if (extras != null) {
        //do something  
    }
   }
 }

Для этого сценария вам не нужно добавлять получателя в файл манифеста.просто используйте как есть!

5 голосов
/ 14 марта 2011

Что работает:

Метод, предложенный в сеансе Google IO 2010 г., Разработка клиентских приложений REST для Android заключается в размещении столбцов в ContentProvider в виде тегов, указывающих на то, что запись извлекается или размещается и т. Д. Это позволяет -крутка (или другое визуальное изменение) для размещения в вашем пользовательском интерфейсе. Вы можете сделать это с помощью специального CursorAdapter, который управляет ListView. Ваш ContentProvider находится на крючке, чтобы изменить флаги по мере необходимости.

Что не:

Вы также можете использовать SyncStatusObserver - который в значительной степени бесполезен, поскольку реагирует на каждое изменение статуса, а не только на вашу конкретную пару аккаунт / contentauthority, и действительно ничего вам не говорит по адресу все, кроме этого изменения произошли. Таким образом, вы не можете сказать, что синхронизируется, и вы не можете отличить «событие начала синхронизации» от «события конца синхронизации». Плева. : P

...