I использовал cancelRequest () из моего SyncAdapter, непосредственно перед тем, как он выйдет из своего потока, но затем я решил, что он предназначен только для использования другим объектом (пользовательским интерфейсом), который хочет отменить текущую синхронизацию (занимает слишком много времени, упс и т. . )
Теперь моя синхронизация думает, что всегда есть ожидающий запрос, который я использую, чтобы игнорировать новые запросы.
Другая вещь, которая у меня есть, - это поток слушателя в Службе, который отслеживает изменения в ContactsContract.AUTHORITY , чтобы он мог запустить синхронизацию моей агрегации.
ОБНОВЛЕНИЕ: У этого потока слушателя утечка. Я запускаю .stop (), когда закончу с ним, однако есть обработчик, который, как мне кажется, остается в живых и не дает службе остановиться.
Я хотел бы отправить SyncResults некоторому объекту (т. Е. SyncManager), который отслеживает такие вещи для ожидания, повторного использования и т. Д.
Что мне не хватает?