mitaichik
@mitaichik

Как продолжить выполнение операции после завершения приложения?

В общем, есть операция (обычный rx.Observable), по результату выполнения которой мне необходимо оповестить пользователя. Операции я храню в отдельном объекте, привязанном к инстасу приложения (точнее - это Singletone у Dagger)

Если открыта определенная активити - то она подписывается на observable и по результату меняет UI.
Если нет - я делаю сообщение с помощью NotificationManager.

Но если юзер закрывает приложение - то ничего не происходит. Как сделать так чтоб операция продолжалась и даже если приложение закрыто - я мог показать Notification?

Я так понимаю что здесь надо задействовать Service, ну тут встает другой вопрос: Оперция может менять состояние других singletone объектов (так же в dagger) - и если делать Service, то мне нужно чтоб в Application и Service эти синглтоны были одними и теме же инстансами. Это реально?
  • Вопрос задан
  • 55 просмотров
Пригласить эксперта
Ответы на вопрос 2
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
Сервис может продлить жизнь приложения, но никаких гарантий тут нет. Кроме того, ещё есть Doze mode, и там всё вообще плохо. Но попытаться можно. На тему синглтонов в даггере - ну так сервис живёт в рамках того же приложения, в чём проблема?
Ответ написан
Комментировать
@red-barbarian
Как бы система сама решает кого убивать, а кому жить. И когда. (Обычно зависит от ресурсов)
Дольше всех живут foreground процессы. Те которые на переднем плане. (например в этом процессе работает активити с которым взаимодействует пользователь).
Если ресурсов не хватает, то их убивают в последнюю очередь.
Меньше всех Empty Processes - у них нет активных компонентов. Но при этом система может их и не убивать (сохранять ради кеширования) .

есть возможность повысить свой процесс до уровня foreground через сервис и startForegroud.
https://medium.com/google-developers/who-lives-and...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы