我正在开发一个必须执行一些后台工作的应用程序。因此,我正在使用服务。现在我想要实现的是假设用户开始后台工作,并且在加载工作时,用户可以选择最小化应用程序或等到加载结束。
加载结束后,我想打开另一个活动。现在我的问题假设用户开始加载并最小化应用程序,那么当加载结束时,用户尚未返回应用程序,那么如果我启动屏幕甚至用户在他的视图中都没有我的应用程序,那么用户可能会被打断他的工作。
所以我想要的是当加载结束时,我只想在我的应用程序对用户可见时才打开,如果应用程序对用户不可见,那么我想等到用户返回,只有当用户返回时,我想打开屏幕如果加载结束。
现在我的想法是我应该有一个布尔值来跟踪应用程序是否对用户可见。在onStop
,我将布尔值设置为 false,onStart
将值设置为 true。再次onStart
我将检查加载是否完成,如果是,那么我将打开屏幕。
但我想知道是否有更好的方法来实现这一目标?如果是,那么如何。我正在寻找更好方法的原因是我想为我的应用程序编写干净的代码,这可能会避免错误和崩溃。
这正是LiveData和RxJava的场景。仅当活动可见时,您的活动才会获取数据。只有当您的活动可用且具有生命周期感知时,您的 Viwemodel 才会向活动提供您的实时数据。如果您的应用在用户关闭您的应用后仍需要继续工作,即使用户重新启动您的应用,您也可以考虑使用 WorkManager。它还带有约束,可根据网络,电池寿命优化您的工作...并提供实时数据供视图模型使用。