Делаю приложение, которое будет проверять наличие и отображать свежую фотографию с одного из фотохостингов. Накидал такую логику работы: При запуске приложения проверяем, установлен ли WorkManager:
- если WorkManager установлен, отменяем его и запускаем AsyncTask,
- если WorkManager не установлен, сразу запускаем AsyncTask.
При закрытии Активити:
- завершаем AsyncTask и запускаем WorkManager.
AsyncTask (с интервалом несколько минут):
- если интернета нет, выводит Snackbar с сообщением, показывает последнюю загруженную фотографию (если была, иначе — “заглушку”).
- если интернет есть, проверяет наличие новых фото и меняет фотографию в активити, сохраняет последнюю загруженную фотографию и не показывает Notification’ы.
WorkManager (запустится, когда будет интернет):
- с минимально возможным интервалом (15 минут) проверяет наличие новых фото,
- если фото появилось, выводит Notification, из которого можно открыть Активити с этим фото,
- сохраняет последнюю загруженную фотографию.
Имеет ли смысл вместо AsyncTask'а (так как он deprecated) использовать Service?
Что ещё я не учёл в логике работы?
Это простое приложение будет адски грузить смартфон. И жрать батарейку. Правильный путь - это пуши. Сделай свой вебсервис, который будет следить за фотографиями и слать в приложение пуш.
Асинктаск вообще не нужно использовать. Ни для чего. Достаточно Retrofit/OkHttp, и Handler.postDelayed.
Сервис не нужно использовать, можешь считать его тоже устаревшим.
Степан, то что ты будешь постоянно грузить сеть зря. И будешь постоянно дергаться в бекграунде. ДЛя этой задачи есть специальный инструмент, надо его использовать.
Допустим, буду использовать пуши. Как быть, если мне нужна разная периодичность получения обновления, когда приложение запущено и когда оно не запущено?
Незапущенное приложение будет некоторые пуши "пропускать", чтобы создавать эффект "реакции" с большим интервалом? Как эта штука вообще работает, если вкратце?