Pull to refresh

Comments 24

Тоже в свое время полез делать честную синхронизацию и понял, что как-то слишком много усилий приходится прикладывать, в итоге сделал через поллящий по таймеру Service. Оверхэд небольшой, просто, и работает, как из пушки. Если бы прочитал вашу статью, гораздо меньше времени потратил бы на принятие такого решения, а то по крупицам выковыривал знания из документациии, убил ощутимое количество времени, и в итоге отказался. Спасибо за хорошую статью.

Но не могу промолчать, прямо глаз резануло, простите за коде ревью, понятное дело, это не критично, но все же:
1) у вас классы называются с маленькой буквы mySyncService, mySyncService — как-то не принято в Java-коммьюнити так делать
2) член класса называется mSyncAdapter — зачем буква m в начале? Зачем различать члены класса и не члены класса с помощью имен? В современных IDE подсветки вполне хватает и глаз не цепляется за все эти m, _, m_. На мой взгляд лишняя информация.
однако если посмотреть исходники Android, то увидим что там члены класса как раз начинаются с m.

//оговорюсь сразу, что у меня в команде принято не писать ничего перед названием члена класса.
Да у них и интерфейсы с I начинаются, например IBinder тот же самый. В то время как сама идея интефейса состоит в том, что ты не знаешь, чем ты пользуешься, просто Binder или просто Connection. Зачем мне знать, интерфейс у меня это или конкретная имплементация, в стандартном JDK таких I нет, хотя m_ встречаются иногда в сорсах.

Что на них смотреть, как говорила мне мама — если все пойдут с обрыва прыгать, ты тоже прыгнешь?
Есть слово такое — стандарт. Если производители розеток 220В начнут пользоваться логикой вашей мамы, то ничего хорошего не выйдет.
Вы используете другой контекст для толкования слов моей мамы, в котором они, бесспорно, неверны.

Я имел в виду, если человек говорит, что в своих проектах не использует m_, то что ж он тут не соблюдает свои внутренние конвеншинзы. У меня на работе мы тоже используем простые имена и новичкам бьем по рукам за m. Да и Java Naming Conventions (стандарт?) как бы намекает:

Except for variables, all instance, class, and class constants are in mixed case with a lowercase first letter. Internal words start with capital letters. Variable names should not start with underscore _ or dollar sign $ characters, even though both are allowed

про m ничего не сказано, но идея та же.
Я разделяю Ваше негодование по поводу лишнего m, нарушающего Java Naming Conventions, но оно прописано в Code Style Guidelines для андроида:
Non-public, non-static field names start with m.
Static field names start with s.
Вы заставили меня чувствовать печаль в этот поздний час. По счастью, это конвеншины для контрибьюторов.
Код — перевод ответа со StackOverflow, решил оставить как есть (хотя с вашими комментариями согласен).
Хм. Это не Ваша статья висела в песочнице пару недель назад? :-)
Моя. А почему «хм»? ;)
Я не про эту, а именно про эту. «Хм», потому что эффект дежавю :-)
Я понял про какую вы. Инвайт за эту я в тот раз не получил. А получил как раз за ту.
UFO just landed and posted this here
Меня, как не разработчика, не знакомого с внутренней кухней, всегда интересовал вопрос — как часто происходит синхронизация аккаунтов из Setting/Accounts and Sync и почему она нигде не задается?
Сам задаюсь этим вопросом, хотя уже воплотил в своем проекте синхронизацию через SyncManager.
Если не задана автоматическая периодическая синхронизация (addPeriodicSync), то только в том случае, когда изменились локальные данные в ContentProvider или когда приложение принудительно запросило синхронизацию. Вот мой вопрос о том же на SO.

Если приложение поддерживает периодические синхронизации, то разработчик может добавить настройку, чтоб задавать их частоту.
Интересует автосинхронизация и стандартный аккаунт Gmail. Остается узнать, какой период заложили разработчики Google…
Можно попробовать сниффером посмотреть. Или, в Управлении эккаунтами есть дата и время последней синхронизации — можно по ним отследить частоту.
Походу нет там никакого периода. На ету тему есть интересное видео с GoogleIO 2010, где описывается технология PUSH которая используется, например, для получения новых мейлов.
Странно, у меня Андроид 2.1 и все аккаунты синхронизируются в бэкграунде. Вы точно уверены насчет ограничения 2.2 и выше?
UFO just landed and posted this here
Для работы addPeriodicSync необходим Android 2.2 (Since: API Level 8).
Но никто не запрещает организовать периодические синхронизации через AlarmManager — в этом случае не совсем ясно чем SyncAdapter лучше, чем Service, также запускающийся через AlarmManager.
А можно вкратце рассказать про первый способ. Ссылка на него (http://habrahabr.ru/blogs/android/103670/) больше не действует к сожалению.
Sign up to leave a comment.

Articles