AbstractThreadedSyncAdapter-> onPerformSync занимает слишком много времени для вызова

1

Я использую AbstractThreadedSyncAdapter для синхронизации некоторых данных с моего телефона Android с сервером. Когда пользователь входит в систему с помощью приложения для телефона, я выполняю первую синхронизацию, поэтому у пользователя есть все данные, готовые в телефоне, прежде чем он начнет работать с моим приложением. Я тестировал его с эмулятором eclipse, и он отлично работает, но когда я тестирую его на своем телефоне, функция onPerformSync занимает слишком много времени, чтобы называться (например, минута или больше).

Это код, который я использую в действии Authenticator:

        Bundle params = new Bundle();
        params.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, false);
        params.putBoolean(ContentResolver.SYNC_EXTRAS_DO_NOT_RETRY, false);
        params.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, false);
        ContentResolver.addPeriodicSync(account, "com.pfc.authority", params, 30);
        ContentResolver.setSyncAutomatically(account, "com.pfc.authority", true);

        ContentResolver.requestSync(account,"com.pfc.authority",params);

Конструктор моего AbstractThreadedSyncAdapter называется очень быстрым, но тогда мое приложение остается ждать завершения синхронизации, и, как я уже сказал, функция onPerformSync занимает слишком много времени, чтобы начать, я не знаю, почему мой телефон слишком долго звонит Это.

Это журнал (отфильтрованный для моего приложения). Я поместил Log.d в конструктор и в функцию onPerformSyn:

11:47:49 SweetSyncAdapter: constructor
11:48:01 SweetSyncAdapter: constructor
11:48:36 SweetSyncAdapter: onPerformSync

Я просмотрел полный журнал (без его фильтрации), и при выполнении моего приложения нет ошибок или предупреждений, но я увидел, что происходит другая синхронизация (музыка, календарь и т.д.). Это может быть проблема?

Я тестировал его с двумя разными ПЗУ (2.3.6 JVU и теперь ICS), и это то же самое. Кто-нибудь знает, почему это происходит?

PD: Прямо сейчас я видел, что то же самое происходит с выходом из системы (я выполняю синхронизацию при выходе пользователей), а на телефоне было 5 минут ожидания вызова onPerformSync).

Теги:
synchronization

1 ответ

1

После создания учетной записи я запрашиваю синхронизацию со следующими строками.

Bundle bundle = new Bundle();
bundle.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, true);
bundle.putBoolean(ContentResolver.SYNC_EXTRAS_FORCE, true);
bundle.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true);
ContentResolver.requestSync(account, authority, bundle);

Я думаю, что SYNC_EXTRAS_FORCE поможет вам

Ещё вопросы

Сообщество Overcoder
Наверх
Меню