Запустить вызов API, как только запись будет вставлена ​​в базу данных Sqlite в android - PullRequest
0 голосов
/ 07 мая 2020

У меня есть требование, если запись, вставленная в локальную БД (Sqlite), как можно скорее приложение инициирует вызов API для отправки автономной записи на сервер. Я не хочу использовать Timer и Alarm service , потому что они будут работать постоянно в фоновом режиме, даже если в локальной БД нет автономных записей. Любые другие альтернативные решения?

Примечание. Целевым уровнем SDK является версия Andorid 8.

1 Ответ

1 голос
/ 08 мая 2020

Как я понял, ваша задача (в общем) - это как вызвать некоторую функцию (например, некоторую sendNewRecord () ), когда новая строка (строки) были вставлены в какую-то таблицу Sqlite.

Я полагаю, что есть 3 альтернативных способа реализовать такую ​​задачу в Sqlite:

  1. Для вызова вашей функции в том же месте кода, где вы поместили свой код вставки новых данных . Я считаю, что это наиболее очевидный и простой выбор. Надеюсь, в вашем приложении есть только одно место, где вы это делаете (шаблон репозитория или его аналог).
  2. Чтобы добавить наблюдателя (функцию обратного вызова) в вашу таблицу и обработать изменения в таблице . Это более сложная задача, и, насколько я знаю, вы будете получать этот обратный вызов после каждого изменения в вашей таблице, и было бы еще одной задачей определить, какие строки в вашей таблице были изменены. Используя современную платформу Room и LiveData в качестве результата запроса, вы можете наблюдать изменения в таблице более прямым способом, но тем не менее вы должны обнаруживать вставленные строки.
  3. Чтобы использовать некоторый механизм планирования для синхронизация (Executor, Timer и т. д.) . Вы писали, что это не ваш случай.

Я бы порекомендовал вам выбрать первый способ . По крайней мере, я не вижу его недостатков.

...