Выполнить действие, когда приложение выходит на передний план - PullRequest
0 голосов
/ 01 июня 2019

Я занимаюсь разработкой приложения, которое должно выполнить некоторую фоновую работу. По этой причине я использую Сервис. Теперь то, чего я хочу достичь, - предположим, что пользователь начинает фоновую работу, и пока работа загружается, у пользователя есть возможность либо минимизировать приложение, либо дождаться окончания загрузки.

После окончания загрузки я хочу открыть другую активность. Теперь моя проблема предполагает, что пользователь запускает загрузку и минимизирует приложение, затем, когда загрузка заканчивается, пользователь еще не вернулся в приложение, а затем, если я запускаю Экран, даже если у пользователя нет моего приложения в его представлении, пользователь может быть прерван. с его работой.

Итак, я хочу, чтобы по окончании загрузки я хотел открыть только в том случае, если мое приложение видимо для пользователя и если приложение невидимо для пользователя, тогда я хочу подождать, пока пользователь не вернется назад, и только когда пользователь возвращается обратно. Я хочу открыть экран, если загрузка закончена.

Теперь я подумал, что у меня должен быть логический тип, который будет отслеживать, является ли приложение видимым для пользователя. На onStop я установлю логическое значение на false и onStart я установлю значение на true. И снова onStart Я проверю, завершена ли загрузка, и если да, то я открою экран.

Но я хочу знать, есть ли лучший способ добиться этого? Если да, то как. Причина, по которой я ищу лучший способ, заключается в том, что я хочу написать чистый код для своего приложения, который мог бы избежать ошибок и сбоев.

1 Ответ

1 голос
/ 02 июня 2019

Это точно сценарий LiveData и RxJava предназначены для. Ваша активность будет получать данные только тогда, когда активность видна. Ваша Viwemodel будет предоставлять ваши данные в реальном времени для активности только тогда, когда ваша активность доступна и она осведомлена о жизненном цикле. Вы также можете рассмотреть возможность использования WorkManager , если ваше приложение должно продолжать работать даже после того, как пользователь закрыл ваше приложение, даже если пользователь перезапустит ваше приложение. Он также поставляется с Constraints для оптимизации работы на основе сети, времени работы от батареи ... и предоставляет рабочие данные для вашей Viewmodel для использования.

...