Тут нужно разделить задачу на этапы- во первых, синхронизация при запуске приложения. Необходимо определить, есть ли интернет и если есть, то: как вариант , отправить на сервер локальную бд, получить синхронизированную и сохранить у себя. Во вторых, работа по синхронизации в фоне, тут поможет ворк менеджер, который будет раз в какое то время ( важно делать не слишком часто) проводить синхронизацию в фоне. Важно учитывать, что в фоне тебе нужно только отправлять бд, а получать лишь при работе пользователя. Я бы предложил раз в день, но можно и реже, например, когда пользователь ставит телефон на зарядку (но не чаще раза в день). Если бд хранит много данных, подумай, как уменьшить объем передачи, например, можно разделить записи, которые уже есть на сервере (пометка на актуальность) и которые получены в момент отсутствия интернета.