2015-03-23 2 views
0

В моем приложении я хочу убедиться, что автоматическая синхронизация должна быть активирована после установки моего приложения и входа пользователя. Для этой цели я использую следующий код:Синхронизатор Android синхронизируется часто с небольшими интервалами

am = AccountManager.get(MainActivity.this); 
account = am.getAccountsByType(AccountGeneral.ACCOUNT_TYPE)[0]; 

if(!ContentResolver.isSyncActive(account, CloudKiboDatabaseContract.AUTHORITY)) { 

    ContentResolver.setSyncAutomatically(account, CloudKiboDatabaseContract.AUTHORITY, true); 
    ContentResolver.requestSync(account, CloudKiboDatabaseContract.AUTHORITY, new Bundle()); 

} 

Этот код работает при запуске приложения. Если синхронизация не активна, она запускает ее автоматически.

Однако я проверил на своем сервере, что он синхронизируется с сервером на очень малых интервалах. Как я могу дать ему больший интервал времени? или дать ему график?

Мне кажется, что ContentResolver.requestSync() вызывает синхронизацию на очень малом интервале.

Пожалуйста, дайте мне знать, если есть хорошее решение, которое также следует лучшим практикам.

Дополнительная информация: Я использую адаптер синхронизации и менеджер учетных записей в своем приложении.

ответ

0

Удалить последнюю строку ContentResolver.requestSync(account, CloudKiboDatabaseContract.AUTHORITY, new Bundle());

Это предотвращает функцию автоматической синхронизации, что вы установили выше, и начать синхронизацию вручную и сразу. Параметр автоматической синхронизации синхронизирует ваши данные, когда есть доступное интернет-соединение, поэтому вам не нужно проверять это.

Вы можете прочитать больше о правильном использовании SyncAdapter здесь - https://developer.android.com/training/sync-adapters/running-sync-adapter.html

+0

Это не мешает синхронизации на очень короткие промежутки времени. Однако он работает, удаляется ли последняя строка или нет. Я удалил последнюю строку. Я бы заглянул в предоставленную ссылку. –

+0

Если ваша основная проблема заключается в том, что даже автосинхронизация вызвана очень часто, вы можете установить [интервал вручную] (https://developer.android.com/training/sync-adapters/running-sync-adapter.html#RunPeriodic) , ** вместо ** автоматической синхронизации (интервал настройки уставок не сбрасывает автосинхронизацию). 'ContentResolver.addPeriodicSync ( СЧЕТОВ, AUTHORITY, Bundle.EMPTY, SYNC_INTERVAL);' – VadymVL

+0

Да, я видел этот метод по ссылке вы предоставили. Этот параметр не устанавливает a-sync как true в настройках. Пользователь должен перейти к настройкам, чтобы установить синхронизацию как истину –

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