Альтернативы SyncAdapter
Я думаю, что его хорошо известно, что в списке наихудших документированных тем SyncAdapter сияет ярким, как алмаз!
согласно http://udinic.wordpress.com/2013/07/24/write-your-own-android-sync-adapter/ SyncAdapter приносит 4 основных преимущества:
A) Эффективность батареи
B) Интерфейс C) Знание контента D) Механизм повтора;
если в любом случае необходимо синхронизировать базу данных SQL с удаленной SQL-базой данных, а не требуется ни одно из этих преимуществ, какие существуют другие альтернативы **? ** ее легко управлять сервис между БД с помощью php, я сделал это для загрузки части процесса синхронизации, но для загрузки я чувствую себя глупо, если я использую метод заполнения запроса, в ближайшее время удаленный db может стать большим и большим. Единственное решение мне приходит в голову написать мою собственную активность/службу синхронизации, но я не знаю, как получить доступ к последней дате обновления SQLite db/table (кроме указания _date в каждой таблице), чтобы проверить, нужно ли синхронизировать еще раз? Я чувствую, что моя голова находится между двумя местами!
Ответы
Ответ 1
Вы смешиваете проблему.
1- Вам действительно нужно использовать адаптер синхронизации??? Поэтому, если да, у вас будет вызов Sync для каждой таблицы, и нет необходимости сохранять последнюю дату вызова. Android сделает это за вас. Просто настройте таймеры синхронизации правильно
2- другое решение - сделать простую AsyncTask и выполнять свою работу здесь. (Например, если вам нужно делать это только один раз в неделю)
Для вашей проблемы с датой, дело в том, если вы действительно хотите знать, если вы в курсе, у вас много решений. На вашем сервере сохраните дату или увеличьте версию и сравните ее, когда вы вызываете синхронизацию с вашего устройства, чтобы узнать, нужно ли вам синхронизировать или нет.
Другое решение - просто просто обновить свой db везде, где он обновлен или нет (например, вы получили небольшой db, поэтому нет необходимости создавать оптимизированную систему).
Я столкнулся с той же проблемой несколько месяцев назад и надеялся, что это вам поможет.
Ответ 2
Возможно, вы захотите рассмотреть эту статью:
https://www.bignerdranch.com/blog/choosing-the-right-background-scheduler-in-android/
Это дает понять, насколько оптимальным выбором является синхронизатор из-за меньших удобных параметров, когда нужно хорошо использовать аккумулятор и выходить в сеть.
Я не рекомендую Asyntask по следующим причинам:
http://blog.danlew.net/2014/06/21/the-hidden-pitfalls-of-asynctask/
Если синхронизатор действительно не работает для вас,
рекомендации по использованию Android, которые предлагают использовать IntentService и WakefulBroadcastReceiver с частичным блокированием слежения при выполнении длительных операций. В нем говорится, что "фреймворк Android предлагает несколько классов, которые помогут вам выполнять операции с загрузкой на отдельный поток, который работает в фоновом режиме. Наиболее полезным из них является IntentService".
https://developer.android.com/training/run-background-service/index.html
https://developer.android.com/training/scheduling/wakelock.html
должна быть какая-то правда, так как они ее написали.
Ответ 3
Android Jetpack включает в себя WorkManager, который является допустимой альтернативой синхронизаторам. Основные характеристики:
- Запланируйте работу в соответствии с доступностью сети или состоянием зарядки устройства
- Обратная совместимость до API 14
- Обеспечивает выполнение задачи, даже если приложение или устройство перезагружается
- Предназначен для отложенных задач (например, периодическая синхронизация данных приложения с сервером)
В качестве альтернативы, чем-то похожим является библиотека Android-Job от Evernote