При этом эту же задачу по синхронизации выполнять фоново по таймеру(например раз в 20 минут), даже если приложение закрыто.
Очень плохая идея, шлите gcm если есть обновления
1. Какие классы использовать? Смотрел примеры у всех все по разному
Что то для асинхроности, можно просто IntentService
Мне нравится использовать retrofit +gson для rest запросов
Для работы с бд ContentProvider - да у него отвратительный api но работает очень стабильно
2. Если пользователь обращается к бд и в этот момент происходит синхронизация в отдельном потоке, то что будет? ошибка?
sqlite работает по принципу много читают один пишет, но это решаемо дополнительными соединениями к бд