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