当应用程序进入前台时执行操作

Perform an Action when the app comes to foreground

我正在开发一个必须执行一些后台工作的应用程序。出于这个原因,我正在使用服务。现在我想要实现的是假设用户开始后台工作,当工作正在加载时,用户可以选择将应用程序最小化或等到加载结束。

加载结束后我想再打开一个Activity。现在我的问题假设用户开始加载并最小化应用程序然后当加载结束时用户尚未 returned 到应用程序然后如果我启动屏幕甚至没有用户在他的视图中看到我的应用程序然后用户可能会被他的工作打断。

所以我想要的是当加载结束时,我只想在我的应用程序对用户可见时打开,如果应用程序对用户不可见,那么我想等到用户 return 返回并且仅当用户 return 返回时,如果加载结束,我想打开屏幕。

现在我想到的是我应该有一个布尔值来跟踪应用程序是否对用户可见。在 onStop 上,我将布尔值设置为 false,在 onStart 上,我将值设置为 true。再次 onStart 我将检查加载是否完成,如果是,我将打开屏幕。

但是我想知道是否有更好的方法来实现这个?如果是那么如何。我正在寻找更好的方法的原因是我想为我的应用程序编写一个干净的代码,这可能会避免错误和崩溃。

这正是 LiveData and RxJava are for. Your activity will get the data only when the activity is visible. Your Viwemodel will provide your live data to the activity only when your activity is available and it's lifecycle aware. You can also consider using WorkManager if your app needs to continue to work even after your user closed your app, even if user restarts your app. It also comes with Constraints 根据网络、电池寿命优化您的工作的场景...并为您的 Viewmodel 提供实时数据以供使用。